对变量绑定感到困惑

时间:2021-04-15 12:42:10

标签: javascript

我在研究 var 与 let 时偶然发现了一个包含此代码的 question

var funcs = [];
// let's create 3 functions
for (var i = 0; i < 3; i++) {
  // and store them in funcs
  funcs[i] = function() {
    // each should log its value.
    console.log("My value: " + i);
  };
}
for (var j = 0; j < 3; j++) {
  // and now let's run each one to see
  funcs[j]();
}

输出让我很困惑,它是

<块引用>

我的价值:3 我的价值:3 我的价值:3

代替

<块引用>

我的价值:0 我的价值:1 我的价值:2

这个问题的最佳答案说

<块引用>

嗯,问题在于每个匿名函数内的变量 i 都绑定到函数外的同一个变量。

这是为什么?导致这种情况的 JavaScript 引擎中发生了什么?

0 个答案:

没有答案