NodeJS 是否立即调用导致错误的函数表达式?

7y4bm7vi  于 2022-11-29  发布在  Node.js
关注(0)|答案(2)|浏览(119)

有人能解释一下为什么会发生这种情况吗?
如果我在一个名为test.js文件中写这样的东西,

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

使用$node test.js通过控制台运行它
然后在控制台中,将打印hello world!,但后面将显示:TypeError: (intermediate value) is not a function

我不知道那里到底发生了什么,我猜不知怎么的节点把函数表达式当作函数调用表达式了?

我使用的是节点v6.9.1

qrjkbowd

qrjkbowd1#

您可以使用void进行呼叫,而不使用分号。
这会胁迫运算式评估并传回undefined

void (function() { 
    console.log('hello world!') 
}());

即使没有外括号,它也能工作。

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

cbeh67ev2#

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

相关问题