JS執行機制

2022-07-27 04:09:11 字數 712 閱讀 1459

同步——一件事做完之後才能幹下一件事,效率低;

非同步——同時開始幹多件事;

js是單執行緒執行的,即同步執行,因為前端面對的問題是與使用者的互動,若是同時獲取事件,比如若是對獲取到的同一節點需要作不同操作,會亂套,因此js是單執行緒的。但是,如果一直都是同步執行,等一件事做完再去做另一件事,無疑非常耗時,使用者體驗會很差,因此,又需要js去非同步執行某些操作。

js中常見非同步程式設計方式有:

1、**函式——解決非同步程式設計最基本的方法

2、發布訂閱、通知

3、事件監聽

4、es 6: promise

5、es 7: * async和await

經典面試題:

for(var i=0;i<5;i++)

for(var j=0;j<5;j++),1000)

}for(var j=0;j<5;j++),1000)

}

會出現上述結果的原因在於for是同步事件,settimeout是非同步事件,同步事件先執行,非同步事件則被放入佇列裡等待執行。等for執行完,j已經變成了5。

//

解決方案1,閉包,實時儲存乙個j給settimeout

for(var j=0;j<5;j++),1000)

})(j);

}//解決方案2,let

for(let j=0;j<5;j++),1000)

}

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