1.使用var 和 let 比较 因为var是全局变量,所以循环结束后值会被覆盖掉,比如初始值i=0;i<5那么最后循环结束后i的值就会也只能是5let有作用域 在每次循环之前 会重新声明及初始化一次; for(var i = 0; i<5;i++){ // setTimeout(()=>console.log(i),0) // 5 5 5 5 5 } for(let i = 0; i<5;i++){ setTimeout(()=>console.log(i),0) // 0 1 2 3 4 }