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