经典面试题(12):关于事件循环,以下代码将输出什么?
生活随笔
收集整理的這篇文章主要介紹了
经典面试题(12):关于事件循环,以下代码将输出什么?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看下面的代碼,輸出的結果是什么?并解釋你的答案。
function printing() {console.log(1);
? ?setTimeout(function() {
console.log(2);
? ?}, 1000);
? ?setTimeout(function() {
console.log(3);
? ?}, 0);
? ?console.log(4);
}
printing();
答案:
14
3
2
想知道為什么輸出順序是這樣的,我們需要弄了解?setTimeout()?做了什么,以及瀏覽器的事件循環原理。
瀏覽器有一個事件循環用于檢查事件隊列,處理延遲的事件。UI事件(例如,點擊,滾動等),Ajax回調,以及提供給?setTimeout()?和?setInterval()?的回調都會依次被事件循環處理。
因此,當調用?setTimeout()?函數時,即使延遲的時間被設置為0,提供的回調也會被排隊。回調會乖乖地待在隊列中,直到指定的時間用完后,它才開始執行動作。
因此,即使?setTimeout()?回調被延遲0毫秒,它仍然會被排隊,并且直到函數中其他非延遲的語句被執行完了之后,才會執行。所以運行的結果是:1 4 3 2。
熱門文章
原創教程原創教程:
附加習題:
職場焦慮:
感到迷茫:
培訓出身:
培訓費用:
搞笑黑話:
職業自由:
職場形象:
總結
以上是生活随笔為你收集整理的经典面试题(12):关于事件循环,以下代码将输出什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云炬随笔20211205(2)
- 下一篇: 设计师听了想打人