1. 程式人生 > >setTimeout-的執行時機

setTimeout-的執行時機

setTimeout 0

今天碰到個很有意思id問題。
setTimeout,第二個參數是0的時候會發生什麽

一般認為如果是0的話應該立即執行的。但是很遺憾我這個回答是錯誤的。
本著不懂就問的精神特意去百度了下。發現介紹的都模模糊糊,或者太過深入。


我做了個試驗:

console.log(1);
setTimeout(function(){console.log(2)},0);
console.log(3)

輸出的結果:

1
3
141
2

我理解的原因:
當瀏覽器執行js 時,遇到setTimeout時,會將其掛起,等待剩余js生完畢後再來執行setTimeout內的代碼,不管其第二個參數值為多少,都是如此;
第三個輸出的141 呢。其實是這個setTimeout的id 用於 使用 clearTimeout 來清除 setTimeout 的。

測試時,還會發生一種情況輸出的結果是

1
3
undefined
2

按我的的理解呢,也需是延時為0 也就不需要id 來清除了...(完全是瞎猜的!!!)

setTimeout-的執行時機