立即调用函数expression式导致错误?

有人可以解释为什么会发生?

如果我在像test.js这样的文件中写这样的东西,

 const anyObject = {} (function(){ console.log('hello world!') }()) 

使用$node test.js通过控制台运行它

然后在控制台,一个hello world! 将会被打印出来,但是跟着这个: TypeError: (intermediate value) is not a function

我不知道到底发生了什么,我想不知道节点是否将函数expression式作为函数调用expression式来使用?

我正在使用节点v6.9.1

您可以使用无调用分号void

这迫使expression式评估并返回undefined

 const anyObject = {} void (function() { console.log('hello world!') }()) 
  • 使用分号
  • 在你的IIFE语法是不同的
 const anyObject = {}; (function(){ console.log('hello world!'); })();