javascript - 自执行功能不起作用?

标签 javascript

我有代码:

function (i)
{
    alert(i);
}(3);

我不明白为什么我看不到警报。

这个语法是什么意思?

为什么这段代码:

( function (i)
{
    alert(i);
}(3))();         

有效吗?

有什么区别?

我错过了什么?

最佳答案

第一个片段将被解释为函数声明,它需要一个名称,而您的函数没有名称。所以这会导致错误。

用括号包围函数定义使得函数被解释为不需要名称的函数表达式,因此它是有效的 JavaScript。

尽管您似乎在那里进行了两次调用。它应该是

(function(i){ alert(i); }(3));

(function(i){ alert(i); })(3); 

通常,您可以将函数表达式放在括号中(所有内容都被计算为表达式)或赋值表达式的右侧(var a = function...)。

参见Section 13 of the ECMAScript 5 specification :

FunctionDeclaration :
function Identifier ( FormalParameterListopt ) {FunctionBody}

FunctionExpression :
function Identifieropt (FormalParameterListopt ) {FunctionBody}

关于javascript - 自执行功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7978219/

相关文章:

javascript - 使用 Facebook Javascript SDK 检查在线用户

javascript - 如何使href in button inside collapse

javascript - 通过将键顺序作为字符串路径 JSON 来获取值

php - CodeIgniter 和 JS 库

javascript - 获取存储在隐藏输入中的对象数组

javascript - 即使状态发生变化也无法加载 ui-view

javascript - 在用户不刷新时更新 Web 应用程序

javascript - 长度为 4、5 或 6 的数字的正则表达式

javascript - Chrome 上的 iframe 高度问题

javascript - 单击时将菜单按钮更改为图形