【JavaScript】事件佇列 Event queue
Published in
2 min readOct 4, 2020
🚩 前言
JavaScript
是屬於單執行序的語言,
但如果遇到非同步的事件會將他跳過,
先暫時移動到 事件佇列 (Event queue)。
🚩 舉例
以上的程式碼最後的執行順序會是下圖,
若是有多個 Event queue
的話,就是看誰先完成就誰執行,
若有兩個 setTimeout
都是 0 秒,那就是先進先出。
🚩 隨堂考
以下的程式碼結果會印出什麼呢?
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 都是各別宣告的變數互相不影響。