JavaScript 语法 : Anonymous Self Calling Functions

标签 javascript

Possible Duplicate:
Self Executing function doesnt work?

在 Javascript 中,为什么会这样

function() { console.log('hello'); }();

给出一个错误,但是

function() { console.log('hello'); }()

不是吗?

编辑:一些答案指出,两者在 Firefox 中都会出现语法错误,但在 Chrome 或 Node.js REPL 中似乎都不是这种情况。此外,

(function() { console.log('hello'); }());

似乎在 Firefox 中工作正常。

最佳答案

实际上这两个都是语法错误。

您需要将匿名函数括在括号中,以便可以正确解析它。

(function(){alert('eyo')})();

这定义了函数并立即调用它。定义一个函数并调用它而不通过用括号括起来“形成”该函数在语法上是无效的。

这里有很好的解释:http://benalman.com/news/2010/11/immediately-invoked-function-expression/

Fortunately, the SyntaxError “fix” is simple. The most widely accepted way to tell the parser to expect a function expression is just to wrap in in parens, because in JavaScript, parens can’t contain statements. At this point, when the parser encounters the function keyword, it knows to parse it as a function expression and not a function declaration.

关于JavaScript 语法 : Anonymous Self Calling Functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11749407/

相关文章:

javascript - 在基于 JavaScript 的游戏中制作在线高分榜的最佳实践是什么?

javascript - 在从查找返回之前等待 mongo 写入

javascript - ReactJS如何将子组件值传递给父组件

javascript - 为什么这个 for 循环需要这么长时间?

javascript - 单击某个选项,然后将值传递给链接到唯一 url 的 "buy now"按钮

Javascript Angular4 服务方法无法识别

javascript - jquery.menu 针对 href 'Syntax error, unrecognized expression' 触发 ="#..."

javascript - 生成字符串以在 Javascript 上使用正则表达式

javascript - Greasemonkey 无法查找/修改/删除内容? (在 Twitch.tv 上)

javascript - Ajax 响应文本未在 javascript 中返回任何结果