JavaScript高級---瀏覽器原理-V8引擎-js執行原理


 

1.JavaScript是一門高級的編程語言。

有高級編程語言,就有低級編程語言,從編程語言發展歷史來說,可以划分三個階段:

  • 機器語言:10001000111,一些機器指令;
  • 匯編語言:mov ax ,bx,一些匯編指令;
  • 高級語言:C、C++、Java、Javascript、Python

但是計算機本身不認識這些高級語言,所以我們的代碼最終需要被轉換成機器指令:

 

 

 

 

2. 瀏覽器的工作原理

有沒有深入考慮過:JavaScript代碼,在瀏覽器是如何被執行的?

 

 

 

3.瀏覽器內核

我們經常聽說:不同的瀏覽器有不同的內核組成

Gecko:早期被Netscape和Mozilla Firefox瀏覽器使用;

Trident:微軟開發,被IE4-IE11瀏覽器使用,但是Edge瀏覽器已經轉向blink

blink:是Webkit的一個分支,Google開發,目前應用於Google Chrome、Edge、Opera等

 

 

4.瀏覽器渲染過程

在執行過程中,HTML解析的時候遇到JavaScript標簽,應該怎么辦?

  • 會停止解析HTML,而去加載和執行JavaScript代碼;

 

 

 

 那么,JavaScript代碼由誰來執行呢?

  • JavaScript引擎

 

 

5.認識JavaScript引擎

為什么需要JavaScript引擎呢?

高級的編程語言都是需要轉成最終的機器指令來執行的;

事實上我們編寫的Javascript無論你交給瀏覽器或者Node執行,最后都是需要被CPU執行的;

但是CPU只認識自己的指令集,實際上是機器語言,才能被CPU所執行;

所以我們需要JavaScript引擎幫助我們將JavaScript代碼翻譯成CPU指令來執行;

 

 

5.1比較常見的JavaScript引擎有哪些?

SpiderMonKey:第一款Javascript引擎,由Brendan Eich開發(也就是JavaScript作者);

Chakra:微軟開發,用於IT瀏覽器

JavaScriptCore:WebKit中的JavaScript引擎,Apple開發;

V8:Google開發的強大JavaScript引擎,也幫助Chrome從眾多瀏覽器脫穎而出;

。。。

 

5.2瀏覽器內核和JS引擎的關系

我們先以WebKit為例,WebKit事實上由兩部分組成的:

WebCore:負責HTML解析、布局、渲染等等相關工作;

JavaScriptCore:解析、執行JavaScript代碼;

 

 

 

 

6.另一個強大的JavaScript引擎就是V8引擎

官方對V8引擎的定義:

  • V8是用C++編寫的Google開源高性能JavaScript和WebAssembly引擎,它用於Chrome和Node.js等。
  • 它實現ECMAScript和WebAssembly,並在window7或者更高版本,macOS10.12+和使用*64,IA-32,arm或者MIPS處理器的linux系統上運行。
  • V8可以獨立運行,也可以嵌入到任何C++應用程序中。

 

 

 

 

6.1 V8引擎架構

 

 

 

 

JavaScript源碼是如何被解析(Parse過程)的呢?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM