代碼
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
上面的代碼最終把6打印6次
原因:執(zhí)行到setTimeout的時(shí)候,它里面的代碼會(huì)等一會(huì)再執(zhí)行,等的這一會(huì)又沾,for循環(huán)因?yàn)閕等于6,不符合 i<6 的條件熙卡,已經(jīng)結(jié)束了杖刷,完了,setTimeout里面的代碼這下要開始執(zhí)行了驳癌,因?yàn)檎{(diào)用了setTimeout 6次滑燃,并且這時(shí)候i等于的是6,所以颓鲜,打印了6次6
改進(jìn)代碼表窘,讓依次打印0 1 2 3 4 5
方法1 for let配合
for(let = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
方法2, 用一個(gè)變量接收i
let i = 0
for(i = 0; i<6; i++){
let a = i
setTimeout(()=>{
console.log(a)
},0)
}