for循环中的let声明

75 阅读1分钟
  • 退出循环时,迭代变量保存的是退出时候的值,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
  })
}