### JS的解釋階段
首先得明確: **JS是解釋型語音,所以它無需提前編譯,而是由解釋器實時運行**
引擎對JS的處理過程可以簡述如下:
```
1. 讀取代碼,進行詞法分析(Lexical analysis),然后將代碼分解成詞元(token)
2. 對詞元進行語法分析(parsing),然后將代碼整理成語法樹(syntax tree)
3. 使用翻譯器(translator),將代碼轉為字節碼(bytecode)
4. 使用字節碼解釋器(bytecode interpreter),將字節碼轉為機器碼
```
最終計算機執行的就是機器碼。
為了提高運行速度,現代瀏覽器一般采用即時編譯(`JIT-Just In Time compiler`)
即字節碼只在運行時編譯,用到哪一行就編譯哪一行,并且把編譯結果緩存(`inline cache`)
這樣整個程序的運行速度能得到顯著提升。
而且,不同瀏覽器策略可能還不同,有的瀏覽器就省略了字節碼的翻譯步驟,直接轉為機器碼(如chrome的v8)
總結起來可以認為是: **核心的JIT編譯器將源碼編譯成機器碼運行**
- Web 開發筆記
- 從輸入 URL 到頁面加載完成的過程中都發生了什么事情?
- 從瀏覽器接收url到開啟網絡請求線程
- 開啟網絡線程到發出一個完整的http請求
- 從服務器接收到請求到對應后臺接收到請求
- 后臺和前臺的http交互
- http的緩存
- 解析頁面流程
- HTML解析,構建DOM
- CSS解析,構建CSSOM
- 資源外鏈的下載
- CSS的可視化格式模型
- 包含塊(Containing Block)
- 控制框(Controlling Box)
- BFC(Block Formatting Context)
- IFC(Inline Formatting Context)
- 其它
- JS引擎解析過程
- JS的解釋階段
- JS的預處理階段
- JS的執行階段
- 回收機制
- 參考資料
- JavaScript模塊化編程
- AMD
- requireJS
- CommonJS
- UMD
- ES6模塊
- 參考資料
- 使用 JavaScript 實現一門編程語言
- 如何使用 JavaScript 實現一門編程語言(1) —— 前言
- 如何使用 JavaScript 實現一門編程語言(2) —— 編寫一個解析器
- 如何使用 JavaScript 實現一門編程語言(3) —— Input stream
- 如何使用 JavaScript 實現一門編程語言(4) —— Token stream
- 如何使用 JavaScript 實現一門編程語言(5) —— AST
- 如何使用 JavaScript 實現一門編程語言(6) —— Interpreter
- 完整代碼
- 參考資料
- 前端布局概論
- 參考資料
- Windows 筆記
- 錯誤解決
- win10應用商店無法登錄提示0x80070426解決方法
- 使用技巧
- 設置 Hyper-V 和 VMware 共存
- Powershell
- WSL