代码
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
上面的代码最终把6打印6次
原因:执行到setTimeout的时候,它里面的代码会等一会再执行,等的这一会,for循环因为i等于6,不符合 i<6 的条件,已经结束了,完了,setTimeout里面的代码这下要开始执行了,因为调用了setTimeout 6次,并且这时候i等于的是6,所以,打印了6次6
改进代码,让依次打印0 1 2 3 4 5
方法1 for let配合
for(let = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
方法2, 用一个变量接收i
let i = 0
for(i = 0; i<6; i++){
let a = i
setTimeout(()=>{
console.log(a)
},0)
}