js執行機制

2022-09-05 05:06:11 字數 897 閱讀 1306

1、

console.log(1);

settimeout(

function

(),0)

console.log(3)

列印順序:132

為什麼是1,3,2

js是單執行緒,同一時間只能做一件事,settimeout是個非同步任務,非同步任務要掛起,放到任務佇列,不立即執行,等同步任務處理完之後,再去處理非同步任務

2、

console.log('a');

while(true

)console.log('b');

列印出:a

因為一直在迴圈,同步任務一直在執行,一直沒執行到b

3、

console.log('a');

settimeout(

function

(),0)

while(true){}

因為while這個同步任務一直沒執行完,執行不到非同步佇列

4、

for(var i=0; i<4; i++) ,1000)

}

列印出:4 4 4 4

因為for迴圈是個同步任務,遇到settimeout,這個時間是1000,定時器會記住這個語句,但是他並沒有去執行,i就+1了,這個時候還沒有執行,交給了定時器了,for迴圈執行完了,到時間了,定時器會把這個settimeout扔到非同步佇列中,這個時候就開始執行了。

5、什麼是eventloop(事件迴圈)

一開始瀏覽器遇到settimeout,然後交給了定時器,定時器先自己留著,然後等同步任務執行完後,這個settiemout扔到了非同步任務,然後按順序放到執行棧中執行,執行棧執行完,再去拿非同步任務,這個不斷迴圈的過程,就是eventloop(事件迴圈)

JS執行機制

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

JS執行機制

輸出結果為 1,2,3 js是從上到下執行的 js是單執行緒的,即在同一時間只能做一件事情 遇到同步程式,直接執行 遇到非同步程式,先掛起,等同步程式執行完畢後再執行 同步佇列 優先順序最高 非同步佇列 遇到非同步佇列先掛起,等同步佇列執行完後,再選擇執行非同步佇列的某個 settimeout中的時...

JS執行機制

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