有人可以从javascript帖子中解释以下摘录的意思吗?

时间:2018-10-16 07:07:01

标签: javascript

我正在复制Javascript帖子的摘录。需要知道作者到底想传达什么。

  

在循环中,如果您每次迭代都会获得一个新的绑定   让我们声明一个变量。允许您这样做的循环为:   内幕与外幕。

     

如下所示:

let arr = [];
for (let i=0; i < 3; i++) {
    arr.push(() => i);
}

console.log(arr.map(x => x())); // [0,1,2]
     

相比之下,var声明导致整个的单个绑定   循环(const声明的工作原理相同):

let arr = [];
for (var i=0; i < 3; i++) {
    arr.push(() => i);
}

console.log(arr.map(x => x())); // [3,3,3]
     

一开始每次迭代都获得新的绑定似乎很奇怪,   但这在您使用循环创建函数时非常有用(例如   涉及循环变量的事件处理回调。

1 个答案:

答案 0 :(得分:0)

基本上let每个循环都会产生一个新变量,因此被推入的数组在每个索引中的值不会与var相同,因为所有索引数组都指向相同的变量。