let a= 0
for(i = 0;i<6;i++){
setTimeout(()=>{
console.log(a)
},0)
}
打印6个6
JS会先执行for 循环,for执行完了 才会执行setTimeout里的代码 此时 a = 6
打印0 1 2 3 4 5
let for 配合 会每次把复制到setTimeout 里一份
for(let i =0;i<6;i++){
setTimeout(()=>{
console.log(i)
})
}
不使用let for 打印0 1 2 3 4 5
使用立即执行函数,创建局部作用域,在此作用域下去执行setTimeout
for(var i =0;i<6;i++){
!function (){
var temp = i
setTimeout(()=>{
console.log (temp)
})
}()
}