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

Immediately invoked function expression causing error?

有人可以解释为什么会这样吗?

如果我在 文件 中写下这样的内容,其名称如 test.js

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

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

然后在控制台中,将打印 hello world!,但随后是: TypeError: (intermediate value) is not a function

我不知道那里到底发生了什么,我猜节点以某种方式将函数表达式作为函数调用表达式?

我正在使用节点 v6.9.1

您可以使用 void 调用而不用分号。

这会强制表达式求值 return undefined.

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

即使没有外括号也能正常工作。

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

  • 使用分号
  • 您的 IIFE 中的语法不同

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