91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

前端JavaScript運行原理是什么

發布時間:2021-10-23 13:38:37 來源:億速云 閱讀:207 作者:iii 欄目:開發技術

本篇內容介紹了“前端JavaScript運行原理是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

目錄
  • 1、什么是JavaScript引擎

  • 2、V8引擎

  • 3、運行時環境

  • 4、運行時的調用棧

  • 5、異步任務

  • 6、總結

1、什么是JavaScript引擎

JavaScript引擎是一個計算機程序,它的主要作用是JavaScript運行時將源碼編譯為機器碼。

每個主流Web瀏覽器都有自己的JavaScript引擎,它通常由web瀏覽器供應商開發。

前端JavaScript運行原理是什么

  • Google Chrome V8。

  • Mozilla Firefox Spider Monkey。

  • Safari Javascript Core Webkit。

  • Edge (Internet Explorer)

以前的JavaScript引擎主要在web瀏覽器使用,不過隨著nodejs的出現就打破了這種局限。

2、V8引擎

V8包含了解析器(parser),解釋器(Ignition),優化編譯器(TurboFan )。

解析器(parser):用于生成抽象語法樹。

前端JavaScript運行原理是什么

解釋器(Ignition):將源碼轉換為字節碼。

前端JavaScript運行原理是什么

優化編譯器(TurboFan ):進行一些優化編譯優化處理,比如內聯緩存。

下面是V8引擎的大體工作流程。

  • 首先 解析器 先生成一個抽象語法樹。

  • 然后 解釋器 根據語法樹生成V8格式的字節碼。

  • 優化編譯器 再將字節碼編譯成機器碼。

前端JavaScript運行原理是什么

3、運行時環境

瀏覽器運行環境中,瀏覽器提供了Web API如:HTTP請求,計時器,事件等。

服務器運行環境中,nodejs提供了API。

下面是JavaScript在瀏覽器中運行時的架構,它包含一個內存堆、一個內存棧、一個事件循環、一個回調隊列。

前端JavaScript運行原理是什么

stack
heap
call stack
callback queue
event loop

4、運行時的調用棧

下面代碼展示了JavaScript執行的調用棧變化。

前端JavaScript運行原理是什么

function add(x, y) {
    return x + y;
}

function print(x, y) {
    console.log('x+y=',add(x, y))
}

print(1, 3)

5、異步任務

JavaScript先執行了 print 函數,然后調用Web API setTimeout() Web API存儲了 setTimeout() 的回調函數,3秒后將回調函數添加到回調隊列,事件循環發現調用棧為空,于是將隊列里的回調函數移至調用棧執行。

前端JavaScript運行原理是什么

function add(x, y) {
    return x + y;
}

function print(x, y) {
    setTimeout(function (){
        console.log('x+y=',add(x, y))
    }, 3000)
}

print(1, 3)

6、總結

JavaScript運行主要依靠JavaScript引擎和運行環境, 引擎 將js源碼翻譯成計算機所理解的機器碼, 運行環境 提供了一些與計算機底層通訊的API和運行實現。

“前端JavaScript運行原理是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北流市| 岫岩| 桃江县| 芷江| 兴业县| 荔波县| 万盛区| 云霄县| 麻城市| 永清县| 思南县| 吉安县| 芮城县| 平江县| 青海省| 朝阳市| 永川市| 古浪县| 精河县| 关岭| 黑山县| 慈溪市| 望奎县| 云梦县| 汉寿县| 仁化县| 宜丰县| 商丘市| 舟山市| 太原市| 清镇市| 丁青县| 湖口县| 宜兰市| 鲜城| 南充市| 双牌县| 扎赉特旗| 长海县| 常德市| 西和县|