5

可能重复:
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' );

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

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

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

这两种实现有什么区别?

4

2 回答 2

1

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

于 2012-09-10T18:22:41.960 回答
-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);

也完全可以接受。由于变量提升,解释器将用前者替换它。

于 2012-09-10T18:21:44.460 回答