- 退出循环时,迭代变量保存的是退出时候的值,console.log(i) 引用到了该迭代变量
for(var i=0;i<5;i++){
setTimeout(()=>{
console.log(i);// 输出:5、5、5、5、5
})
}
- let 属于块级作用域,JavaScript 引擎在后台会为每个迭代循环生成一个新的迭代变量,注意是新的迭代变量,该变量继承上一个循环结束的变量值
for(let i=0;i<5;i++){
setTimeout(()=>{
console.log(i);// 输出:0、1、2、3、4
})
}