立即调用函数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!'); })();