1.使用var:
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 10
2.使用let
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 6
问题:在1中,循环内被赋给数组a的函数内部的console.log(i),里面的i指向的是全局的i,那a[i]的i岂不是也指向全局的i,那岂不是只有a[10]有值?
1、循环中的语句是立即执行
2、每进一次循环,都会给数组第i项赋值
3、这里赋值的是个函数,但函数并没有执行
所以循环完了是这样的: