學(xué)過編譯原理的人都知道拟枚,對于靜態(tài)語言來說(如Java新博、C++、C)宋彼,處理上述這些事情的叫編譯器(Compiler),相應(yīng)地對于JavaScript這樣的動態(tài)語言則叫解釋器(Interpreter)仙畦。這兩者的區(qū)別用一句話來概括就是:編譯器是將源代碼編譯為另外一種代碼(比如機(jī)器碼输涕,或者字節(jié)碼),而解釋器是直接解析并將代碼運(yùn)行結(jié)果輸出慨畸。 比方說莱坎,firebug的console就是一個JavaScript的解釋器。
但是寸士,現(xiàn)在很難去界定說檐什,JavaScript引擎它到底算是個解釋器還是個編譯器,因?yàn)槿蹩ǎ热缦馰8(Chrome的JS引擎)乃正,它其實(shí)為了提高JS的運(yùn)行性能,在運(yùn)行之前會先將JS編譯為本地的機(jī)器碼(native machine code)婶博,然后再去執(zhí)行機(jī)器碼(這樣速度就快很多)瓮具,相信大家對JIT(Just In Time Compilation)一定不陌生吧。
參考文獻(xiàn)
- 我們應(yīng)該如何去了解JavaScript引擎的工作原理(這里的引擎應(yīng)該確切地說是解析器引擎)