(內容待補上)
回想昨日的學習:
JS 是 backwards compatibility,即使是早期的 JS 至今在瀏覽器上還是可以執行;
如果出現舊瀏覽器要跑較新 JS program,就會使用 transpiler 來填補這些 forward compatibility 的問題,常見的 transpiler 就是 babel;
開始今天份的學習吧
What's in an Interpretation ?
https://ithelp.ithome.com.tw/upload/images/20220920/201516320BcokxvL21.png
Interpreted Language 直譯式語言
直譯式語言是一種「由上到下」、「逐行執行」的程式語言特性。假如第五行代碼有錯誤,第一行至第四行得先執行完,第五行的錯誤才會出現;
Compiled Language 編譯式語言
https://ithelp.ithome.com.tw/upload/images/20220920/20151632DXVk50Iccb.png
編譯式語言是經過 parsing -> compilation -> execution ,因此在執行之前 會將所有 error 在 parsing, compiling 階段被抓出來;
JavaScript 是 interpreted 還是 compiled ?
先說結論,JavaScript 是 interpreted language (直譯式語言)。
但!藉由 JS VM ( engine ) parsing, compiling, and executing 的論點,本書作者認為 JS 是 compiled language。
搞得我好混亂 ... ,今天先將 engine 如何 parsing -> compiling -> executing 畫出來,明天再繼續:
來看看 JS 如何在 engine 上運作:
https://ithelp.ithome.com.tw/upload/images/20220920/20151632YRn7OF7PR5.png
[ 參考 ]
https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/get-started/ch1.md#whats-in-an-interpretation
https://blog.bitsrc.io/how-does-javascript-really-work-part-1-7681dd54a36d