为什么我应该在javascript中将函数分配给变量?

Nat*_*oop 5 javascript

可能的重复:
JavaScript: var functionName = function() {} vs function functionName() {}
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' );
Run Code Online (Sandbox Code Playgroud)

为什么我应该将函数分配给 greet 变量?

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

function greet ( person, message ) {
  var greeting = 'Hello, ' + person + '!';
  log( greeting + ' ' + message );
};
Run Code Online (Sandbox Code Playgroud)

这两种实现有什么区别?

Hal*_*yon -2

没有真正的区别,但var如果您有递归函数,该形式使您可以在使用前声明。

简单的例子:

var func1, func2;

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

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

func1(10);
Run Code Online (Sandbox Code Playgroud)

虽然

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

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

func1(10);
Run Code Online (Sandbox Code Playgroud)

也是完全可以接受的。由于变量提升,解释器会将其替换为前者。