立即调用函数表达式导致错误?
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!');
})();
有人可以解释为什么会这样吗?
如果我在 文件 中写下这样的内容,其名称如 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!');
})();