日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

今天我們來聊聊js引擎

JAVAScript很酷,但是機器如何才能真正理解您編寫的代碼?作為JavaScript開發人員,我們通常不必自己處理編譯器。但是,一定要了解JavaScript引擎的基礎知識,看看它如何處理我們人類友好的JS代碼,并將其轉變為機器可以理解的東西!

|注意: 實現基于Node.js和基于Chromium的瀏覽器使用的V8引擎。

html解析器遇到script帶有源的標記。來自script的代碼從網絡,緩存或已安裝的service worker中加載。請求腳本作為一個字節流被響應,該字節流被字節流解碼器處理!字節流解碼器對字節流進行解碼,一旦它被下載。

JavaScript?可視化:js引擎

 

字節流解碼器從解碼的字節流中創建token。例如,0066解碼為f, 0075解碼為u, 006e解碼為n,0063解碼為c, 0074解碼為t,0069解碼為i, 006f解碼為o和 006e解碼為n后跟一個空格。好像你寫function一樣!這是JavaScript中的保留關鍵字,創建token并將其發送到解析器(和pre-parser,我沒有在gif中介紹,但稍后會進行解釋)。其余字節流也會發生同樣的情況。

JavaScript?可視化:js引擎

 

引擎使用兩個解析器:預解析器和解析器。預解析器僅及早檢查token,以查看是否存在語法錯誤?。這樣可以減少發現代碼中錯誤的數量,否則解析器稍后會發現錯誤!

如果沒有錯誤,則解析器根據從字節流解碼器接收的token創建節點。使用這些節點,它會創建一個抽象語法樹或AST。

JavaScript?可視化:js引擎

 

接下來,是時候翻譯了!翻譯器(interpreter)遍歷AST,并根據AST包含的信息生成字節碼。字節代碼生成完畢后,將刪除AST,以清除內存空間。最后,我們有一些機器可以使用的東西!

JavaScript?可視化:js引擎

 

盡管字節碼很快,但是可以更快。運行此字節碼時,將生成信息。它可以檢測某些行為是否經常發生,以及所使用的數據類型。也許您已經調用了數十次函數:是時候對其進行優化,使其運行得更快了!♀‍♀?

字節碼與生成的類型反饋一起被發送到優化編譯器(optimizing compiler)。優化編譯器獲取字節碼和類型反饋,并從中生成高度優化的機器碼。

JavaScript?可視化:js引擎

 

JavaScript是一種動態類型化的語言,這意味著數據類型可以不斷變化。如果JavaScript引擎每次必須檢查某個值具有哪種數據類型,那將非常慢。

相反,引擎使用一種稱為內聯緩存(inline caching)的技術。它將代碼緩存在內存中,以期將來返回具有相同行為的相同值!假設某個函數被調用了100次,并且到目前為止一直返回相同的值。它將假定它也會在您第101次調用它時返回該值。

假設我們有以下函數sum,到目前為止,每次都使用數值作為參數來調用它:

JavaScript?可視化:js引擎

 

這將返回數字3!下次調用它時,它將假定我們再次使用兩個數值調用它。

如果是這樣,則不需要動態查找,它可以使用存儲在已引用的特定內存插槽中的結果。否則,如果假設不正確,它將不會對代碼進行優化,并且恢復為原始字節代碼,而不是優化后的機器代碼。

例如,下一次調用它時,我們傳遞的是字符串而不是數字。由于JavaScript是動態類型的,因此我們可以做到這一點而沒有任何錯誤!

JavaScript?可視化:js引擎

 

這意味著該數字2將被強制轉換為字符串,而該函數將返回該字符串 "12"。返回執行解釋的字節碼并更新類型反饋。

希望這篇文章對您有用!當然,我在這篇文章中沒有涉及引擎的許多部分(JS堆,調用堆棧等),如果您對JavaScript的內部結構感興趣,我絕對鼓勵您自己開始做一些研究,V8是開源的,并且有一些很好的文檔說明了它的幕后工作方式!

歡迎各位道友留言評論!!!

分享到:
標簽:引擎 js
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定