請運行該代碼片段,就像你看到的,控制檯輸出如下:當我在for循環中調用setTimeout時發生了什麼?
1
...
5
6 (5 times)
所以,據我所知,setTimeout
創建一個新的函數棧,但i<=5
應時i == 5
停下來,這樣我就可以」不明白爲什麼6
。
This is MDN about explain setTimeout
.
從1到5我是很容易理解,但是發生了什麼事時,電話setTimeout
,以及如何解釋6
控制檯存在嗎?
for(var i = 1; i <= 5; i++) {
console.log(i)
setTimeout(function() {
console.log(i)
}, 0)
}
循環首先被執行,然後是延遲函數,那時'i'的值是6.另外,'timer'和'clearInterval'對於代碼中的'setTimeout' – Teemu
@Teemu我刪除了我的另一個演示版本留下的一些無意義的代碼。 –