我正在复制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]
一开始每次迭代都获得新的绑定似乎很奇怪, 但这在您使用循环创建函数时非常有用(例如 涉及循环变量的事件处理回调。
答案 0 :(得分:0)
基本上let
每个循环都会产生一个新变量,因此被推入的数组在每个索引中的值不会与var
相同,因为所有索引数组都指向相同的变量。