【问题标题】:In Javascript, what is the motivation or advantage of using var foo = function foo(i) { ... }?在 Javascript 中,使用 var foo = function foo(i) { ... } 的动机或优势是什么?
【发布时间】:2011-03-24 23:56:27
【问题描述】:

我在

的回答中看到了

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

正在做类似的事情

var foo = function foo(param) {
  ...
}

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

function foo(param) {
  ...
}

?这样做的好处或动机是什么?

【问题讨论】:

  • 您可能想阅读this
  • 您可能错过了一个中间环节:var foo = function (param) { ... }。这与使用命名函数表达式之间的主要区别在于调试友好性(在@Daniel 的链接中提到)和递归(仅顺便提及)。

标签: javascript function-declaration


【解决方案1】:

很快,如果您使用以下代码,第一个示例创建一个名为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 的建议。

【讨论】:

    猜你喜欢
    • 2011-01-06
    • 2015-05-06
    • 2015-03-08
    • 1970-01-01
    • 2011-05-17
    • 2013-03-03
    • 2023-03-17
    • 2014-05-06
    • 2011-09-20
    相关资源
    最近更新 更多