for循環與setTimeout

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)
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章