我有代码:
function (i)
{
alert(i);
}(3);
我不明白为什么我看不到警报。
这个语法是什么意思?
为什么这段代码:
( function (i)
{
alert(i);
}(3))();
有用吗?
有什么区别?
我错过了什么?
第一个片段将被解释为函数声明,它需要一个名称,而您的函数没有名称。所以这会导致错误。
用括号包围函数定义使得函数被解释为函数表达式,不需要名称,因此它是有效的 JavaScript。
尽管您似乎在那里进行了两次调用。应该是
(function(i){ alert(i); }(3));
或
(function(i){ alert(i); })(3);
通常,您可以将函数表达式放在括号中(所有内容都被计算为表达式)或赋值表达式的右侧(
var a = function...
)。
函数声明:
函数 标识符 ( 形式参数列表opt ) {FunctionBody}函数表达式 :
函数 标识符opt(形式参数列表opt){FunctionBody}
()
运算符负责执行函数,因此由()
包裹的函数表达式会立即执行。