我觉得这个讲的不够详细,所以重新整理了一下
用var定义的
var data = [];
for(var k = 0; k < 2; k++){
data[k] = function(){
console.log(k);
};
}
data[0]();
data[1]();
//2
//2
上边代码的执行顺序展开来是这样的
用let定义的
var data = [];
for(let k = 0; k < 2; k++){
data[k] = function(){
console.log(k);
};
}
data[0]();
data[1]();
//0
//1
他的执行顺序是这样的
验证:下边两个代码运行速度差很多
总结:
let的块级作用域不单单只有一次,for循环的多次循环中,每一次循环都对应着一个单独的作用域