3
A
回答
2
V8引擎將javascript編譯爲一系列機器代碼指令,每次只能執行一個函數(usually, functions are not compiled until the first call)。
V8解析代碼並提取AST(抽象語法樹), 執行範圍分析以便了解符號引用哪個上下文,並將其轉換爲機器代碼指令。
至於你提到的V8高度集中表現爲:除了充分編譯器編譯每個功能,V8包括額外的編譯器負責優化該標識爲經常使用的塊(被稱爲Crankshaft)
的所以不,沒有JavaScript代碼的解釋,但翻譯和執行機器代碼。
1
解釋器:語言運行時/虛擬機的一個(核心)模塊部分,它對模塊所在虛擬機的語言表達的一組表達式採取特定的「動作」。
編譯器:語言運行庫的一個(核心)模塊部分,它將用模塊編譯器編寫的語言表達的一組表達式轉換爲表達式運行所針對的體系結構的原生指令集。
標準Node.js是針對V8構建的,V8將每個Javascript代碼片段編譯爲本機指令。您可以在命令行中使用--print_code標誌來查看哪些腳本正在編譯,並編譯爲哪些腳本。
希望這會有所幫助。
+0
解除投票答覆的人,請說明你爲什麼這樣做,是嗎? –
相關問題
- 1. 是否有編譯到JavaScript的lisp?
- 2. 是否可以通過node.js編譯latex文檔?
- 3. 在Cygwin上編譯node.js
- 4. Heroku:Git無法編譯Node.js
- 5. 如何編譯Node.js和Angular
- 6. 編譯少的Node.js和React.js
- 7. Node.js中JavaScript/ECMAScript數組是否「稀疏」?
- 8. Javascript是不是在angularJs路由編譯
- 9. 是javascript解釋還是jit編譯
- 10. JavaScript「編譯器」
- 11. 是否有JavaScript的本地機器代碼編譯器?
- 12. 是否有可能將C代碼編譯爲Javascript代碼?
- 13. 是否可以將nodejs項目編譯爲單個JavaScript文件?
- 14. JavaScript中包含的C#代碼是否仍需編譯?
- 15. Adobe Flex是否可以編譯成HTML/JavaScript?
- 16. 是否有可能從D 2.0編譯成Javascript?
- 17. 瀏覽器是否編譯和緩存javascript?
- 18. 是否在鈦SDK中編譯了未使用的JavaScript文件?
- 19. Microsoft Visual C++ Express編譯器是否編譯C代碼?
- 20. 編譯器是否只編譯可以執行的代碼?
- 21. LLVM 5.0編譯器是否等同於GCC編譯器?
- 22. Flex 4.6編譯器檢查是否爲ios或Android編譯
- 23. 編譯器內是否有預編譯IPV6的標誌
- 24. Fortran 95編譯器是否可以編譯Fortran 77代碼?
- 25. Heroku的推否決無法編譯的Node.js應用
- 26. 否分別編譯Node.JS模塊並加載運行時間
- 27. 交叉編譯,爲什麼「檢查我們是否正在交叉編譯...否」?
- 28. 如何編譯/安裝node.js(無法配置cxx編譯器!)(Ubuntu)。
- 29. 什麼是javascript模板預編譯?
- 30. 不能編譯JavaScript的$是未申報
V8有一個JIT編譯器。看到http://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/ –
看來問題的答案是......但JavaScript本質上是一種腳本語言,術語_compiled_更常用於較低級別的語言。由JavaScript引擎來最好地解釋它。請參閱:http://softwareengineering.stackexchange.com/a/138541 – TGrif
我不確定你在問什麼。您已經通過說明「*編譯JavaScript *」來回答自己的問題,是嗎? – Bergi