为什么这种函数调用在JavaScript中是错误的?

时间:2009-03-22 06:50:22

标签: javascript function invocation

我想创建一个匿名函数,然后立即调用它。

1)这会带来语法错误。为什么呢?

function ()
{
    alert("hello");
}();

2)用()包装函数定义并且它可以工作。

(function ()
{
    alert("hello");
})();

3)或者,将匿名函数分配给变量。它有效。

var dummy = function()
{
    alert("hello");
}();

为什么第一种方法不起作用?

1 个答案:

答案 0 :(得分:12)

ECMAScript Language Specification第12.4节说:

  

ExpressionStatement 无法启动   使用function关键字,因为那样   可能会使它变得模棱两可    FunctionDeclaration

因此,不允许使用您的案例1,因为这可能会导致语言含糊不清。其他情况是不同类型的语句(不是 ExpressionStatement ),这不是问题,因此允许构造。