为什么要在javascript中为变量赋值?

时间:2012-09-10 18:19:34

标签: javascript

  

可能重复:
  JavaScript: var functionName = function() {} vs function functionName() {}
  What is the difference between a function expression vs declaration in Javascript?

我试图了解javascript的“最佳做法”。

此代码来自jqfundementals.com

// create a function that will greet a person,
// and assign the function to the `greet` variable
var greet = function( person, message ) {
  var greeting = 'Hello, ' + person + '!';
  log( greeting + ' ' + message );
};

greet( 'Jory', 'Welcome to JavaScript' );
greet( 'Rebecca', 'Thanks for joining us' );

为什么要将函数分配给greet变量?

我的第一个冲动就是这样写:

function greet ( person, message ) {
  var greeting = 'Hello, ' + person + '!';
  log( greeting + ' ' + message );
};

这两种实现有什么区别?

2 个答案:

答案 0 :(得分:1)

这些片段之间没有任何差异,除了提升允许您在定义之前调用行中的前一个函数。但这只是一个让你热身的简单例子。实际上,人们不会将这些函数分配给变量,而是将它们直接传递给其他函数。或者他们否则在表达式上下文中使用它们。或者他们动态决定要存储哪个功能。或其他任何事情。

答案 1 :(得分:-2)

没有真正的区别,但是var表单使您能够在使用之前声明您具有递归函数。

简单示例:

var func1, func2;

func1 = function (count) {
    count = count - 2;
    if (count > 0) {
        func2(count);
    }
}

func2 = function (count) {
    func1(count + 1);
}

func1(10);

虽然

function func1 (count) {
    count = count - 2;
    if (count > 0) {
        func2(count);
    }
}

function func2 (count) {
    func1(count + 1);
}

func1(10);

也完全可以接受。由于可变吊装,翻译将用前者替换它。