为什么要在javascript中为变量分配函数?

Why should I assign a function to a variable in javascript?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
JavaScript: var functionName = function() {} vs function functionName() {}
What is the difference between a function expression vs declaration in Javascript?

我试图理解JavaScript的"最佳实践"。

此代码来自jqfundementals.com

1
2
3
4
5
6
7
8
9
// 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变量?

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

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

这两种实现之间的区别是什么?


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


没有真正的区别,但是var表单允许您在使用前声明,因为您有递归函数。

简单例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var func1, func2;

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

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

func1(10);

虽然

1
2
3
4
5
6
7
8
9
10
11
12
function func1 (count) {
    count = count - 2;
    if (count > 0) {
        func2(count);
    }
}

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

func1(10);

也是完全可以接受的。由于起重方式不同,翻译人员将用前者替换。