javascript引擎工作原理

好程式設計師發表於2020-07-29

  好程式設計師web 培訓分享 JavaScript 引擎工作原理, JavaScript Web 前端人員必須要掌握的知識點之一,也是一門高階語言。最初 JavaScript 只是在 Web 瀏覽器中執行,隨著 Node 的出現, JavaScript 也可以在服務端執行。

   下面給大家講解一下JavaScript 引擎工作原理。

   JavaScript 引擎是什麼 ?

   JavaScript 引擎是一種用於將我們的程式碼轉換為機器可讀語言的引擎。如果沒有 JavaScript 引擎,你編寫的程式碼對計算機來說簡直是一堆“胡言亂語”。不僅僅是 JavaScript ,其他所有程式語言都需要一個類似的引擎,來將這些“胡言亂語”轉換成對計算機有意義的語言。

   JavaScript 引擎的組成部分有哪些 ?

   1 、編譯器。主要工作是將原始碼編譯成抽象語法樹,然後在某些引擎中還包含將抽象語法樹轉換成位元組碼。

   2 、直譯器。在某些引擎中,直譯器主要是接受位元組碼,解釋執行這個位元組碼,然後也依賴來及回收機制等。

   3 JIT 工具。一個能夠 JIT 的工具,將位元組碼或者抽象語法樹轉換成原生程式碼,當然它也需要依賴牢記垃圾回收器和分析工具 (profiler) 。它們負責垃圾回收和收集引擎中的資訊,幫助改善引擎的效能和功效。

   JavaScript 引擎是如何工作的 ?

   JavaScript 的工作形式取決於是什麼引擎。目前比較常用的 JavaScript 引擎有兩個: WebKit JavaScriptCore Google V8 引擎。這兩個引擎處理程式碼的方式是不同的。 JavaScriptCore : 原始碼 = 》抽象語法樹 = 》位元組碼

   1 、詞法分析,將原始碼分解成一系列具有明確含義的符號或字串 ( 分詞 );

   2 、用詞法分析器分析這些符號,將其構建成抽象語法樹 ;

   3 、解析器生成位元組碼 ( 編譯器可以理解 );

   4 4 JIT(Just-In-Time) 程式參與進來,分析和執行解析器所生成的位元組碼。谷歌的 V8 引擎,用 C++ 編寫,也編譯和執行 JavaScript 原始碼、處理記憶體分配、垃圾收集剩餘物。 V8 引擎並不將抽象語法樹轉變成位元組碼或者其它中間表示,沒有像 Java 一樣的虛擬機器或者位元組碼直譯器。這麼做主要是為了減少這抽象語法樹到位元組碼的轉換時間,這一切都在網頁載入時候完成,雖然可以提高最佳化的可能,但是這些分析可能帶來巨大的時間浪費。

   免責宣告:本文圖片及文字資訊均由小編轉載自網路,如有侵權請聯絡我們進行刪除。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2707778/,如需轉載,請註明出處,否則將追究法律責任。

相關文章