2020-07-29
web前端培訓(xùn) JavaScript
好程序員web前端培訓(xùn)分享JavaScript引擎工作原理,JavaScript是Web前端人員必須要掌握的知識(shí)點(diǎn)之一,也是一門高級(jí)語(yǔ)言。最初JavaScript只是在Web瀏覽器中運(yùn)行,隨著Node的出現(xiàn),JavaScript也可以在服務(wù)端運(yùn)行。
下面給大家講解一下JavaScript引擎工作原理。
JavaScript引擎是什么?
JavaScript引擎是一種用于將我們的代碼轉(zhuǎn)換為機(jī)器可讀語(yǔ)言的引擎。如果沒有JavaScript引擎,你編寫的代碼對(duì)計(jì)算機(jī)來(lái)說(shuō)簡(jiǎn)直是一堆“胡言亂語(yǔ)”。不僅僅是JavaScript,其他所有編程語(yǔ)言都需要一個(gè)類似的引擎,來(lái)將這些“胡言亂語(yǔ)”轉(zhuǎn)換成對(duì)計(jì)算機(jī)有意義的語(yǔ)言。
JavaScript引擎的組成部分有哪些?
1、編譯器。主要工作是將源代碼編譯成抽象語(yǔ)法樹,然后在某些引擎中還包含將抽象語(yǔ)法樹轉(zhuǎn)換成字節(jié)碼。
2、解釋器。在某些引擎中,解釋器主要是接受字節(jié)碼,解釋執(zhí)行這個(gè)字節(jié)碼,然后也依賴來(lái)及回收機(jī)制等。
3、JIT工具。一個(gè)能夠JIT的工具,將字節(jié)碼或者抽象語(yǔ)法樹轉(zhuǎn)換成本地代碼,當(dāng)然它也需要依賴?yán)斡浝厥掌骱头治龉ぞ?profiler)。它們負(fù)責(zé)垃圾回收和收集引擎中的信息,幫助改善引擎的性能和功效。
JavaScript引擎是如何工作的?
JavaScript的工作形式取決于是什么引擎。目前比較常用的JavaScript引擎有兩個(gè):WebKit的JavaScriptCore和Google的V8引擎。這兩個(gè)引擎處理代碼的方式是不同的。JavaScriptCore: 源代碼=》抽象語(yǔ)法樹=》字節(jié)碼
1、詞法分析,將源代碼分解成一系列具有明確含義的符號(hào)或字符串(分詞);
2、用詞法分析器分析這些符號(hào),將其構(gòu)建成抽象語(yǔ)法樹;
3、解析器生成字節(jié)碼(編譯器可以理解);
4、4個(gè)JIT(Just-In-Time)進(jìn)程參與進(jìn)來(lái),分析和執(zhí)行解析器所生成的字節(jié)碼。谷歌的V8引擎,用C++編寫,也編譯和執(zhí)行JavaScript源代碼、處理內(nèi)存分配、垃圾收集剩余物。V8引擎并不將抽象語(yǔ)法樹轉(zhuǎn)變成字節(jié)碼或者其它中間表示,沒有像Java一樣的虛擬機(jī)或者字節(jié)碼解釋器。這么做主要是為了減少這抽象語(yǔ)法樹到字節(jié)碼的轉(zhuǎn)換時(shí)間,這一切都在網(wǎng)頁(yè)加載時(shí)候完成,雖然可以提高優(yōu)化的可能,但是這些分析可能帶來(lái)巨大的時(shí)間浪費(fèi)。
免責(zé)聲明:本文圖片及文字信息均由小編轉(zhuǎn)載自網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系我們進(jìn)行刪除。
開班時(shí)間:2021-04-12(深圳)
開班盛況開班時(shí)間:2021-05-17(北京)
開班盛況開班時(shí)間:2021-03-22(杭州)
開班盛況開班時(shí)間:2021-04-26(北京)
開班盛況開班時(shí)間:2021-05-10(北京)
開班盛況開班時(shí)間:2021-02-22(北京)
開班盛況開班時(shí)間:2021-07-12(北京)
預(yù)約報(bào)名開班時(shí)間:2020-09-21(上海)
開班盛況開班時(shí)間:2021-07-12(北京)
預(yù)約報(bào)名開班時(shí)間:2019-07-22(北京)
開班盛況Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號(hào)-5 京公網(wǎng)安備 11010802035720號(hào)