JS執行機制

2021-09-20 15:42:30 字數 1260 閱讀 7958

輸出結果為:1,2,3

js是從上到下執行的

js是單執行緒的,即在同一時間只能做一件事情 

遇到同步程式,直接執行;

遇到非同步程式,先掛起,等同步程式執行完畢後再執行 

同步佇列:優先順序最高

非同步佇列:遇到非同步佇列先掛起,等同步佇列執行完後,再選擇執行非同步佇列的某個

settimeout中的時間間隔如果小於4mss,也按4ms計算

輸出a都是同步任務,while會無限迴圈,b不會執行

輸出:a

因為settimeout為非同步任務,在同步任務沒有執行完之前是不會被執行的,而while的條件始終成立,故同步任務陷入迴圈,非同步任務一直等待

輸出:4,4,4,4

瀏覽器有個timer模組,主要處理settimeout和setinterval的,是在定時器到了那個時間才會把定時器放到非同步佇列中,非同步佇列等待事件迴圈(event loop)來執行

因為for為同步任務,會執行settimeout,settimeout為非同步任務

1.執行棧執行的都是同步任務

2.任務佇列中放非同步任務

3.當執行棧中的同步任務都執行完畢後,會把滿足條件的放入執行棧中,執行

console.log("a");

settimeout(function(),0);

cobnsole.log("b");

首先會把console.log("a")和console.log("b")放入執行棧中執行,執行完後,如果settimeout事件到了,則會把settimeout非同步任務放到任務佇列中;

當執行棧中的同步任務執行完畢後,就會從任務佇列中取settimeout的同步任務進行執行,執行完畢後,繼續從任務佇列中拿任務,有則執行,如此迴圈就形成了event loop 

JS執行機制

js是單執行緒的,settimeout和setinterval是非同步任務,要掛起,不先執行,等同步任務完成之後,再去處理非同步任務 console.log 1 settimeout function 0 console.log 3 console.log 4 輸出 1 3 4 2console.l...

JS執行機制

js單執行緒 在同一時間js只能做一件事。為什麼是單執行緒?如果多執行緒,同時操作乙個dom會出問題。非阻塞 event loop 事件迴圈 任務佇列 同步任務佇列要優先於非同步任務佇列處理。非同步任務被分為巨集任務和微任務。常見的非同步任務分類如下 巨集任務 定時器系列,dom事件 ui互動事件 ...

js執行機制

說到js的執行機制,那麼就要先從幾個名詞開始,這是為了讓更多的人能看懂。如下 程序和執行緒 程序 程序是正在執行的程式的例項。程式關於資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位 程序有三個基本的狀態 執行緒 有時被稱為輕量級程序 lightweight process,lwp 是程...