在Javascript中,使用var foo = function foo(i){...}的动机或优势是什么?

时间:2010-08-03 22:41:22

标签: javascript function-declaration

我在

的答案中看到了这一点
  

In Javascript, why write "var QueryStringToHash = function QueryStringToHash (query) { ... }"?

正在执行类似

的操作
var foo = function foo(param) {
  ...
}

在那种特殊情况下,为什么这样做而不是仅使用

function foo(param) {
  ...
}

?这样做有什么好处或动机?

1 个答案:

答案 0 :(得分:0)

简而言之,如果您使用以下代码,第一个示例创建一个名为foo的函数,第二个示例创建一个匿名函数并将其分配给bar变量。除了样式之外,基本的区别在于foo可以在代码中,在定义之前调用(因为它是函数的名称);否则,bar在收到赋值之前是一个未定义的变量,因此不能在之前使用。

var foo_result = foo(123); // ok
function foo(param) { /* ... */ }

var bar_result = bar(123); // error: undefined is not a function
var bar = function(param) { /* ... */ }
var bar_result = bar(123); // ok

我建议你阅读@Pekka的建议。