IIFE内部出现循环错误VM531:3未捕获的TypeError:console.log(...)

时间:2019-06-13 05:07:33

标签: javascript function loops ecmascript-6

此代码无效

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")
  })()
}

1 个答案:

答案 0 :(得分:4)

您需要在console.log之后加上分号-否则它将试图调用返回的console.logundefined)返回结果,该结果不是函数,正在调用您的错误

自动分号插入不考虑空格。

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