循环索引同步
- 通过
var
定义变量,函数中是局部变量,其他作用域是全局变量
//先执行循环,最后调用test函数打印最后的i
for (var i = 0; i < 3; i++) {
function test() {
console.log(i);
}
}
test();//打印 3
//通过立即执行函数可以实现同步
for (var i = 0; i < 3; i++) {
(function test(index) {
console.log(index);
})(i); //打印 0 1 2
}
- for循环中通过
let
定义变量是局部变量 - for循环一次定义一个新的变量
- for循环中若定义了函数,函数用到了let定义的变量,则该函数是一个闭包
for (let i = 0; i < 3; i++) {
//形成了闭包
function test() {
console.log(i);
}
}
test();//打印 2