1、for + setTimeout 使用var執行
for(var i = 0; i < 5; i ++){
setTimeout(function (){
console.log(i)
}, 1000)
}
執行結果爲 :5
上面代碼中,變量i是var命令聲明的,在全局範圍內都有效,所以全局只有一個變量i。每一次循環,變量i的值都會發生改變,裏面的i指向的就是全局的i,導致運行時輸出的是最後一輪的i的值,也就是 5。
2、for + setTimeout 使用 let 執行
for(let i = 0; i < 5; i ++){
setTimeout(function (){
console.log(i)
}, 1000)
}
執行結果:
上面代碼中,變量i是let聲明的,當前的i只在本輪循環有效,所以每一次循環的i其實都是一個新的變量,所以最後輸出的是0,1,2,3,4。
3、使用let把0,1,2,3,4,顯示出來了,但是他們都是1秒就顯示了,怎樣才能隔一秒顯示一個數呢?
for(let i = 0; i < 5; i ++){
setTimeout(function (){
console.log(i)
}, i*1000)
}