为什么 JavaScript 中这种函数调用是错误的?
我想创建一个匿名函数,然后立即调用它。
1)这会带来语法错误。 为什么?
function ()
{
alert("hello");
}();
2)用 () 包装函数定义并且它可以工作。
(function ()
{
alert("hello");
})();
3) 或者,将匿名函数赋给一个变量。 有用。
var dummy = function()
{
alert("hello");
}();
为什么第一种方法行不通?
I'd like to create an anonymous function and then invoke it immediately.
1) This will bring a syntax error. Why?
function ()
{
alert("hello");
}();
2) wrap the function definition with () and it works.
(function ()
{
alert("hello");
})();
3) or, assign the anonymous function to a variable. It works.
var dummy = function()
{
alert("hello");
}();
Why the first way doesn't work?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
ECMAScript 语言规范第 12.4 节指出:
所以你的情况1是不允许的,因为它可能会导致语言中的歧义。 其他情况是不同类型的语句(不是ExpressionStatement),其中这不是问题,因此允许在那里构造。
The ECMAScript Language Specification, section 12.4, says:
So your case 1 is not allowed, because it might lead to ambiguities in the language. The other cases are different kinds of statements (not ExpressionStatements) in which this is not a problem, so the construct is allowed there.