每个调用如何在包含内部函数的for循环外找到变量?

时间:2018-02-15 15:04:41

标签: javascript function ecmascript-6

关于本书Definitive JavaScript Developer guideline让循环中的声明,代码:

var funcs = [];

for (let i = 0; i < 10; i++) {
    funcs.push(function() {
        console.log(i);
   });
}

funcs.forEach(function(func) {
    func();  // outputs 0, then 1, then 2, up to 9
})

它说:

  

let声明每次循环都会创建一个新变量,因此在循环内创建的每个函数都会获得自己的副本。 i的每个副本都具有在创建它的循环迭代开始时分配的值。

我想知道,在调用函数func()时,它如何以及在何处找到i数组中每个元素的funcs值。 funcs中的所有元素都相同

ƒ () {
    console.log(i);
  }

有人可以说明在上面的代码中调用函数时每个步骤是如何发生的吗? (我有点理解,如果使用var而不是let,则全局变量i是每个调用找到的内容。)

0 个答案:

没有答案