为什么 function(){}() 不会调用自身?

3

我曾经见过使用function(){}()的方式来创建并立即调用函数。

所以在我的node控制台窗口中,我输入了以下内容:

function() { console.log('aoeu') }()
...
...

我本来期望 aoeu 会被作为副作用记录下来,但实际上没有。

请问有人能解释一下原因吗?


你需要将函数定义用括号包起来,或者在前面添加一个算术操作符等方式,将其转换为函数表达式。然后,你就可以调用它了。 - Hunan Rostomyan
4
如果您真的想了解“为什么”的细节,那么您必须去阅读ECMAScript规范并理解语言的语法。简而言之,以function()开头的内容是一个函数定义(用于定义函数)而不是一个将立即执行的表达式。 - jfriend00
有关语法细节,请参阅为什么需要在同一行上调用匿名函数? - jfriend00
1
@bhspencer - 在重复的问题中查看它询问的那个点:但我不明白为什么这样同样有效:。那就是与这个问题相同的问题。 - jfriend00
是的,我现在明白了,谢谢。 - bhspencer
显示剩余4条评论
1个回答

4
您将通过使用以下内容获得所需的输出:
(function(){

  console.log('aoeu');

})();

3
这并不是原帖所问的。他们询问为什么他们已有的东西无法运作。 - jfriend00
@jfriend00 - 抱歉我的朋友 - 我正要添加细节。 - Nikhil Aggarwal
@jfriend00 这个答案指出了 OP 正在使用错误的 IIFE 语法。 - Matt Rowland
@MattRowland- 是的,我知道。但那不是OP提出的问题。 - jfriend00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接