網(wǎng)站建設(shè)公司廣告語蘇州網(wǎng)站制作開發(fā)公司
JIT實(shí)際上指,JS的編譯過程、運(yùn)行時。
Just in Time
在傳統(tǒng)的編譯語言里,比如JAVA、Go等,是提前編譯的,它們的執(zhí)行是先在本地編譯出一個"東西",然后在放到服務(wù)器上運(yùn)行。
提前編譯的三大過程:
- 分詞/詞法分析(Tokenizing/Lexing)
- 解析/語法分析(Parsing)
- 機(jī)器碼代碼生成
但是JS是腳本語言,JS是一邊編譯一邊執(zhí)行的,所以JS會復(fù)雜很多。
例如,在 語法分析和代碼生成階段有特定的步驟來對運(yùn)行性能進(jìn)行優(yōu)化,包括對冗余元素進(jìn)行優(yōu)化 等。
大部分情況下JS編譯發(fā)生在代碼執(zhí)行前的幾微秒(甚至更短!)的時 間內(nèi)。
簡單地說,任何 JavaScript 代碼片段在執(zhí)行前都要進(jìn)行編譯(通常就在執(zhí)行前)。因此, JavaScript 編譯器首先會對 var a = 2; 這段程序進(jìn)行編譯,然后做好執(zhí)行它的準(zhǔn)備,并且 通常馬上就會執(zhí)行它。