【JavaScript】事件佇列 Event queue

Neptune Li
Li-NInja
Published in
2 min readOct 4, 2020

🚩 前言

JavaScript 是屬於單執行序的語言,
但如果遇到非同步的事件會將他跳過,
先暫時移動到 事件佇列 (Event queue)。

🚩 舉例

圖片引用自六角學院: https://www.hexschool.com/

以上的程式碼最後的執行順序會是下圖,
若是有多個 Event queue 的話,就是看誰先完成就誰執行,
若有兩個 setTimeout 都是 0 秒,那就是先進先出。

圖片引用自六角學院: https://www.hexschool.com/

🚩 隨堂考

以下的程式碼結果會印出什麼呢?

for (var i = 0; i < 3; i++) {
setTimeout(function() {
console.log(i);
}, 0);
}

答案在下面

答案會是印出三個 3
因為 setTimeout 會產生三個 even queue
在 for 迴圈跑完之後才去執行他,
因為迴圈跑完時 i = 3
因此 even queue會印出三個 3。

如果是 let i = 0 這種宣告的話就可以印出我們想要的答案 0 1 2
因為每一個 setTimeout 的 i 都是各別宣告的變數互相不影響。

--

--