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

为什么这种函数调用在JavaScript中是错误的?,javascript,function,invocation,Javascript,Function,Invocation,我想创建一个匿名函数,然后立即调用它 1) 这将带来语法错误。为什么? function () { alert("hello"); }(); 2) 用()包装函数定义,它就可以工作了 (function () { alert("hello"); })(); 3) 或者,将匿名函数指定给变量。它起作用了 var dummy = function() { alert("hello"); }(); 为什么第一种方法不起作用?第12.4节说: 表达式语句无法启动 使用函数关

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

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

function ()
{
    alert("hello");
}();
2) 用()包装函数定义,它就可以工作了

(function ()
{
    alert("hello");
})();
3) 或者,将匿名函数指定给变量。它起作用了

var dummy = function()
{
    alert("hello");
}();
为什么第一种方法不起作用?

第12.4节说:

表达式语句无法启动 使用
函数
关键字,因为 可能会用一个 功能声明


所以案例1是不允许的,因为它可能会导致语言中的歧义。其他情况是不同类型的语句(不是表达式语句),在这些语句中这不是一个问题,因此该构造在那里是允许的。

那么显然这不是一个语法错误?正如sth所说,这是一个语法错误