學過編譯原理的人都知道,對于靜態(tài)語言來說(如Java、C++、C),處理上述這些事情的叫編譯器(Compiler),相應地對于JavaScript這樣的動態(tài)語言則叫解釋器(Interpreter)。這兩者的區(qū)別用一句話來概括就是:編譯器是將源代碼編譯為另外一種代碼(比如機器碼,或者字節(jié)碼),而解釋器是直接解析并將代碼運行結果輸出。 比方說,firebug的console就是一個JavaScript的解釋器。
但是,現在很難去界定說,JavaScript引擎它到底算是個解釋器還是個編譯器,因為,比如像V8(Chrome的JS引擎),它其實為了提高JS的運行性能,在運行之前會先將JS編譯為本地的機器碼(native machine code),然后再去執(zhí)行機器碼(這樣速度就快很多),相信大家對JIT(Just In Time Compilation)一定不陌生吧。
參考文獻
- 我們應該如何去了解JavaScript引擎的工作原理(這里的引擎應該確切地說是解析器引擎)