V8 JavaScript 引擎
V8 是為 Google Chrome 提供支援的 JavaScript 引擎的名稱。它是在我們使用 Chrome 瀏覽時獲取並執行我們的 JavaScript 的東西。
V8 是 JavaScript 引擎,即它解析和執行 JavaScript 程式碼。DOM 和其他 Web 平臺 API(它們共同構成了執行時環境)是由瀏覽器提供的。
很酷的是,JavaScript 引擎獨立於其所在的瀏覽器。這一關鍵特性促成了 Node.js 的崛起。2009 年,V8 被選為 Node.js 的引擎,隨著 Node.js 的流行度爆炸式增長,V8 成為了如今為大量用 JavaScript 編寫的伺服器端程式碼提供支援的引擎。
Node.js 的生態系統非常龐大,這要歸功於 V8,它還透過 Electron 等專案為桌面應用提供支援。
其他 JS 引擎
其他瀏覽器有自己的 JavaScript 引擎
- Firefox 有 SpiderMonkey
- Safari 有 JavaScriptCore(也叫 Nitro)
- Edge 最初基於 Chakra,但最近已經使用 Chromium 和 V8 引擎進行了重建。
此外還存在許多其他引擎。
所有這些引擎都實現了 ECMA ES-262 標準,也稱為 ECMAScript,這是 JavaScript 使用的標準。
對效能的追求
V8 是用 C++ 編寫的,並且在不斷改進。它具有可移植性,可以在 Mac、Windows、Linux 和其他幾個系統上執行。
在這篇 V8 介紹中,我們將忽略 V8 的實現細節:這些細節可以在更權威的網站上找到(例如 V8 官方網站),而且它們會隨著時間而改變,有時是徹底的改變。
V8 和其他 JavaScript 引擎一樣,總是在不斷發展,以加速 Web 和 Node.js 生態系統。
在 Web 領域,一場關於效能的競賽已經持續了多年,我們(作為使用者和開發者)從這場競爭中受益匪淺,因為我們年復一年地獲得更快、更最佳化的機器。
編譯
JavaScript 通常被認為是一種解釋型語言,但現代 JavaScript 引擎不再僅僅解釋 JavaScript,它們會編譯它。
這種情況自 2009 年以來一直在發生,當時 SpiderMonkey JavaScript 編譯器被新增到 Firefox 3.5 中,此後所有人都遵循了這一理念。
JavaScript 由 V8 內部透過**即時** (JIT) **編譯**進行編譯,以加快執行速度。
這可能看起來有違直覺,但自 2004 年 Google 地圖推出以來,JavaScript 已經從一種通常執行幾十行程式碼的語言,演變為在瀏覽器中執行成千上萬行程式碼的完整應用程式。
我們的應用程式現在可以在瀏覽器中執行數小時,而不僅僅是一些表單驗證規則或簡單的指令碼。
在這個*新世界*裡,編譯 JavaScript 是完全有道理的,因為雖然可能需要多一點時間來讓 JavaScript *準備就緒*,但一旦完成,它的效能將比純解釋的程式碼高得多。