国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

理解JS執行順序

Labradors / 1373人閱讀

摘要:前言眾所周知,的執行順序是自上而下的。嚴格意義上來說,沒有多線程的概念,所有的程序都是單線程依次執行的。代碼的執行階段,此階段對變量進行賦值和函數的聲明。

前言
眾所周知,JS的執行順序是自上而下的。
嚴格意義上來說,javascript沒有多線程的概念,所有的程序都是單線程依次執行的。
就是代碼在執行過程中,另一段代碼想要執行就必須等當前代碼執行完成后才可以進行。
注意
js代碼執行分為兩個部分:
1、代碼的檢查裝載階段(預編譯階段),此階段進行變量和函數的聲明,但是不對變量進行賦值,
   變量的默認值為undefined。
2、代碼的執行階段,此階段對變量進行賦值和函數的聲明。
所以:Js的變量提升和函數提升會影響JS的執行結果,ES6中的let定義的變量不會提升 
3、js的執行順序,先同步后異步
4、異步中任務隊列的執行順序: 先微任務microtask隊列,再宏任務macrotask隊列
5、調用Promise 中的resolve,reject屬于微任務隊列,setTimeout屬于宏任務隊列
所以:【同步>異步;微任務>宏任務】

示例
console.log("event start")
setTimeout(function () {
    console.log("setTimeout");
});

new Promise(function(resolve,reject){
    console.log("promise start")
    resolve()
}).then(function(){
    console.log("promise end")
})
console.log("event end")

執行結果為:

event start
promise start
event end
promise end
undefined
setTimeout

解釋:

主線程執行按順序代碼
遇到 setTimeout, 回調進入到宏任務隊列上
遇到 Promise, 立即執行, then 函數進入到微任務隊列
同步代碼執行結束, 主線程檢查是否存在微任務, 發現 then, 執行
微任務執行完畢, 再去查找宏任務 setTimeout, 執行
setTimeout 執行結束, 檢查是否存在微任務, 不存在, 結束.

圖例

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/104159.html

相關文章

  • javascript引擎執行的過程的理解--執行階段

    摘要:如果對語法分析和預編譯,還有疑問引擎執行的過程的理解語法分析和預編譯階段。參與執行過程的線程分別是引擎線程也稱為內核,負責解析執行腳本程序的主線程例如引擎。以上便是引擎執行宏任務的整個過程。 一、概述 js引擎執行過程主要分為三個階段,分別是語法分析,預編譯和執行階段,上篇文章我們介紹了語法分析和預編譯階段,那么我們先做個簡單概括,如下: 1、語法分析: 分別對加載完成的代碼塊進行語法...

    SnaiLiu 評論0 收藏0
  • javascript引擎執行的過程的理解--執行階段

    摘要:如果對語法分析和預編譯,還有疑問引擎執行的過程的理解語法分析和預編譯階段。參與執行過程的線程分別是引擎線程也稱為內核,負責解析執行腳本程序的主線程例如引擎。以上便是引擎執行宏任務的整個過程。一、概述 js引擎執行過程主要分為三個階段,分別是語法分析,預編譯和執行階段,上篇文章我們介紹了語法分析和預編譯階段,那么我們先做個簡單概括,如下: 1、語法分析: 分別對加載完成的代碼塊進行語法檢驗,語...

    Achilles 評論0 收藏0
  • Javascript 事件循環event loop

    摘要:現實中是這樣的執行結果為結果告訴我們,是單線程沒錯,不過不是逐行同步執行。搜索了很多官方個人博客得到了一堆詞引擎主線程事件表事件隊列宏任務微任務,徹底懵逼。。。以此規則不停的執行下去就是我們所聽到的事件循環。 都知道javascript是單線程,那么問題來了,既然是單線程順序執行,那怎么做到異步的呢? 我們理解的單線程應該是這樣的,排著一個個來,是同步執行。 showImg(https...

    Miyang 評論0 收藏0
  • 10分鐘理解JS引擎的執行機制

    摘要:深入理解引擎的執行機制靈魂三問為什么是單線程的為什么需要異步單線程又是如何實現異步的呢中的中的說說首先請牢記點是單線程語言的是的執行機制。 深入理解JS引擎的執行機制 1.靈魂三問 : JS為什么是單線程的? 為什么需要異步? 單線程又是如何實現異步的呢? 2.JS中的event loop(1) 3.JS中的event loop(2) 4.說說setTimeout 首先,請牢記2...

    zzbo 評論0 收藏0
  • JS每日一題:函數式編程中代碼組合(compose)如何理解?

    摘要:期函數式編程中代碼組合如何理解定義顧名思義,在函數式編程中,就是將幾個有特點的函數拼湊在一起,讓它們結合,產生一個嶄新的函數代碼理解一個將小寫轉大寫的函數一個在字符后加的函數將兩個函數組合起來這里假設我們實現了每日一題每日一題顯示結果里上面 20190315期 函數式編程中代碼組合(compose)如何理解? 定義: 顧名思義,在函數式編程中,Compose就是將幾個有特點的函數拼湊在...

    Kaede 評論0 收藏0

發表評論

0條評論

Labradors

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<