JS執行機制

2021-10-06 20:59:55 字數 663 閱讀 2463

js單執行緒:在同一時間js只能做一件事。為什麼是單執行緒?如果多執行緒,同時操作乙個dom會出問題。

非阻塞:event loop(事件迴圈)

任務佇列:同步任務佇列要優先於非同步任務佇列處理。

非同步任務被分為巨集任務和微任務。常見的非同步任務分類如下:

巨集任務:定時器系列,dom事件(ui互動事件)

微任務:process.nexttick,promise.then

同一次事件迴圈中,微任務永遠在巨集任務之前執行。

執行棧:在呼叫方法的時候會自動生成生成乙個相應的執行環境,也被稱作執行上下文,執行上下文裡放著這個方法的私有作用域、引數、this物件等。數個方法被呼叫的時候,js會依次解析這些方法,把其中的同步任務按照執行順序排隊到乙個叫做執行棧的地方。

當執行棧中的任務清空,主線程會先檢查微任務佇列中是否有任務,如果有,就將微任務佇列中的任務依次執行,直到微任務隊列為空,之後再檢查巨集任務佇列中是否有任務,如果有,則取出第乙個巨集任務加入到執行棧中,之後再清空運行棧,檢查微任務,這個迴圈的過程叫做event loop(事件迴圈)

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