更新時(shí)間:2021-11-26 來(lái)源:黑馬程序員 瀏覽量:
JavaScript代碼在運(yùn)行之前會(huì)經(jīng)過(guò)一個(gè)編譯的過(guò)程,而編譯有分詞、解析和代碼生成三個(gè)步驟,下面我們?cè)敿?xì)介紹。
第一個(gè)步驟:分詞
分詞的目的是把字符組成的代碼分解成有意義的代碼塊,這些代碼塊稱(chēng)為詞法單元。
第二個(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)?
【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營(yíng)】深圳跨境電商運(yùn)營(yíng)畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線(xiàn)均薪資 1W+
2025-09-19【AI鴻蒙開(kāi)發(fā)】上海校區(qū)AI鴻蒙開(kāi)發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開(kāi)發(fā)-Python】畢業(yè)33個(gè)工作日,就業(yè)率已達(dá)到94.55%,班均薪資20763元
2025-09-19【AI智能應(yīng)用開(kāi)發(fā)-Java】畢業(yè)當(dāng)天offer率91%,薪資1W+占比54.2%,班級(jí)均薪12k+
2025-09-19