此代码无效
for (let i = 0; i < 10; i++) {
console.log("ddd")
(function x() {
console.log("eee")
})();
}
VM531:3未捕获的TypeError:console.log(...)不是函数 在:3:3
这两个作品很好
for (let i = 0; i < 10; i++) {
(function x() {
console.log("eee")
})()
console.log("ddd")
}
for (let i = 0; i < 10; i++) {
(function x() {
console.log("eee")
})()
}
答案 0 :(得分:4)
您需要在console.log
之后加上分号-否则它将试图调用返回的console.log
(undefined
)返回结果,该结果不是函数,正在调用您的错误
自动分号插入不考虑空格。
for (let i = 0; i < 10; i++) {
console.log("ddd");
(function x() {
console.log("eee")
})();
}
您的代码正在尝试这样做:
console.log("ddd")(function x() {...})()
事实证明是:
undefined(function x() {...})()
这会导致您的TypeError。
由于缺少分号而导致的括号重叠问题类似于my answer上的this question。