揭秘 JavaScript:V8 引擎如何啟動你的程式碼

更新於 2024/05/09閱讀時間約 1 分鐘

如果你曾經撰寫過網頁,那你一定接觸過 JavaScript
無論是在 NodeJs 或是瀏覽器中運行。

但你有沒有想過,我們寫下的 JS 程式碼,這些看似單純的英文和符號,是如何被轉化為機器能夠理解和執行的程式呢?

今天,讓我們一起深入了解其中的核心主角
——Google 開發的開源 JavaScript 引擎:V8。
V8 是眾多 JavaScript 引擎中的佼佼者,但今天我們專注於它是如何魔法般地啟動你的程式。

首先,V8 引擎會把我們的 JS 程式碼,這一大串文字,交給解析器。

解析器的工作是找出程式碼中的關鍵元素,如函數名稱、變數宣告等,並將它們組織成一個稱為抽象語法樹(AST)的結構。

這個結構不僅存儲變數和命令,還記錄它們的執行順序,為接下來的處理階段做好準備。

而 AST 將被送到下一個的流程 Ignition 它就像火星一樣負責點燃了引擎,啟動你的程式 它負責將我們的 JavaScript 程式碼編譯成 ByteCode

ByteCode 是一種相當底層的程式語言,它已經相當接近能直接被機器執行的機器語言,基本上這個程式直接丟給 JS 虛擬機,就可以直接 run 起來但這還不夠,快還要更快


V8 引擎設計了第二套系統 TurboFan

TurboFan 會與 Ignition 合作,取得各個 function的執行情況、哪些特別常被執行、哪些 function 型別其實是固定的,並且在進一步的編譯成最快的 MachineCode (最佳化)Ignition 負責啟動程式碼,TurboFan 則負責優化和加速

這兩套系統構建出了一個很強大的特性 【JIT 即時編譯】 既擁有編譯語言的高速,用擁有直譯語言的靈活

這就是 V8 引擎


V8 引擎編譯流程

V8 引擎編譯流程


avatar-img
1會員
3內容數
Ray 貓 - 全端網頁工程師、遊戲開發師 這邊會分享一些科技相關、視覺藝術、前端的最新資訊 - 台灣大學課程網全端工程師 Ziphus 獨立開發者 - 喜歡挑戰也喜歡冒險 電子郵件 ray948787@gmail.com
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Ray 貓 Realms 的其他內容
本文介紹了 Docker 的基礎概念,以及在軟體工程環境中的運用。藉由 Docker 的容器化技術和映像檔技術,能夠實現開發和生產環境的一致性,並且支持負載平衡和無縫更新。此外,也提到了 Kubernetes 和 Docker Swarm 這兩個重要工具的用途和適用對象。
本文介紹了 Docker 的基礎概念,以及在軟體工程環境中的運用。藉由 Docker 的容器化技術和映像檔技術,能夠實現開發和生產環境的一致性,並且支持負載平衡和無縫更新。此外,也提到了 Kubernetes 和 Docker Swarm 這兩個重要工具的用途和適用對象。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
JavaScript (簡稱 JS) 是具有一級函數的輕量級、直譯式或即時編譯的程式語言。它因為用作網頁的腳本語言而大為知名,但也用於許多非瀏覽器的環境,像是 Node.js 等。由於 JavaScript 語法上的一些缺點,軟體工程師們又設計出了 CoffeeScript、TypeScript 和
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
在本章節中,我們將學習JavaScript的基本語法,包括如何註解代碼和如何聲明變數。瞭解這些基礎知識對於進一步學習和使用JavaScript來編寫代碼是非常重要的。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
前言: 一直想要把自己的學習筆記整理整理,至少在寫下筆記的時候,也能釐清觀念。 結果拖延到現在,終於要提筆了,不知道能堅持多久(???)。
※ JavaScript 來源: 國際標準化組織﹘ECMA推出的通行標準稱為 ECMAScript,目的是讓各家瀏覽器能根據 ECMAScript 標準來實作能在該瀏覽器運行的 JavaScript。簡單說ECMAscript 是語法標準的規格書,它描述了各種語言應該呈現的樣子、規則,以及細節。
Thumbnail
學習JavaScript的理由有很多,包括容易學習的程式語言、互動式體驗、多功能性、跨平臺、社群和資源豐富、高市場需求。此外,文章提供了設計和前端教學的相關資源連結。文章中還提到了一些與學習JavaScript相關的教學文章和影音教學資源。
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
JavaScript (簡稱 JS) 是具有一級函數的輕量級、直譯式或即時編譯的程式語言。它因為用作網頁的腳本語言而大為知名,但也用於許多非瀏覽器的環境,像是 Node.js 等。由於 JavaScript 語法上的一些缺點,軟體工程師們又設計出了 CoffeeScript、TypeScript 和
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
在本章節中,我們將學習JavaScript的基本語法,包括如何註解代碼和如何聲明變數。瞭解這些基礎知識對於進一步學習和使用JavaScript來編寫代碼是非常重要的。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
前言: 一直想要把自己的學習筆記整理整理,至少在寫下筆記的時候,也能釐清觀念。 結果拖延到現在,終於要提筆了,不知道能堅持多久(???)。
※ JavaScript 來源: 國際標準化組織﹘ECMA推出的通行標準稱為 ECMAScript,目的是讓各家瀏覽器能根據 ECMAScript 標準來實作能在該瀏覽器運行的 JavaScript。簡單說ECMAscript 是語法標準的規格書,它描述了各種語言應該呈現的樣子、規則,以及細節。
Thumbnail
學習JavaScript的理由有很多,包括容易學習的程式語言、互動式體驗、多功能性、跨平臺、社群和資源豐富、高市場需求。此外,文章提供了設計和前端教學的相關資源連結。文章中還提到了一些與學習JavaScript相關的教學文章和影音教學資源。