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互動事件 ...