更新時(shí)間:2021-11-26 來(lái)源:黑馬程序員 瀏覽量:
JavaScript代碼在運(yùn)行之前會(huì)經(jīng)過(guò)一個(gè)編譯的過(guò)程,而編譯有分詞、解析和代碼生成三個(gè)步驟,下面我們?cè)敿?xì)介紹。
第一個(gè)步驟:分詞
分詞的目的是把字符組成的代碼分解成有意義的代碼塊,這些代碼塊稱為詞法單元。
第二個(gè)步驟:解析
由JavaScript編譯器對(duì)分詞得到的一個(gè)個(gè)代碼塊進(jìn)行解析,生成一棵抽象的語(yǔ)法樹(shù)(AST)。
第三個(gè)步驟:代碼生成
在這個(gè)過(guò)程中,JavaScript引擎會(huì)把在第二個(gè)步驟中生成的抽象語(yǔ)法樹(shù)轉(zhuǎn)換成可執(zhí)行的代碼,也就是最終生成出一些機(jī)器指令。
實(shí)際上,javascript引擎的編譯過(guò)程要復(fù)雜得多,包括大量?jī)?yōu)化操作,上面的三個(gè)步驟是基本的編譯概述。
總結(jié):
JavaScript代碼編譯原理,編譯器把程序分解成詞法單元(token),然后把詞法單元解析成語(yǔ)法樹(shù)(AST),再把語(yǔ)法樹(shù)變成機(jī)器指令等待執(zhí)行。
猜你喜歡:
JavaScript數(shù)組排序如何實(shí)現(xiàn)?