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

时间:2017-02-23 07:52:40

标签: javascript node.js iife

有人可以解释为什么会发生这种情况吗?

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

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

使用$node test.js

在控制台中运行它

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

我不知道那里究竟发生了什么,我想某种节点是将函数表达式作为函数调用表达式?

我正在使用节点v6.9.1

2 个答案:

答案 0 :(得分:6)

您可以使用void进行呼叫而不使用分号。

这会强制表达式进行评估并返回undefined

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

即使没有外括号也可以。

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

答案 1 :(得分:2)

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

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