我有代码:
function (i)
{
alert(i);
}(3);
我不明白为什么我看不到警报。
这个语法是什么意思?
以及为什么这段代码:
( function (i)
{
alert(i);
}(3))();
有效吗?
有什么不同?
我缺少什么?
第一个片段将被解释为函数声明,它需要一个名称,而您的函数没有名称。所以这会导致错误。
用括号包围函数定义使得函数被解释为函数表达式它不需要名称,因此它是有效的 JavaScript。
尽管您似乎在那里进行了两次调用。它应该是
(function(i){ alert(i); }(3));
or
(function(i){ alert(i); })(3);
通常,您可以将函数表达式放在括号中(所有内容都被计算为表达式)或赋值表达式的右侧(var a = function...
).
See ECMAScript 5 规范第 13 节 http://ecma262-5.com/ELS5_HTML.htm#Section_13:
FunctionDeclaration :
function Identifier ( FormalParameterListopt ) {FunctionBody}
FunctionExpression :
function Identifieropt (FormalParameterListopt ) {FunctionBody}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)