回想昨日的學習:
JS 是 backwards compatibility,即使是早期的 JS 至今在瀏覽器上還是可以執行;
如果出現舊瀏覽器要跑較新 JS program,就會使用 transpiler 來填補這些 forward compatibility 的問題,常見的 transpiler 就是 babel;
開始今天份的學習吧
直譯式語言是一種「由上到下」、「逐行執行」的程式語言特性。假如第五行代碼有錯誤,第一行至第四行得先執行完,第五行的錯誤才會出現;
編譯式語言是經過 parsing -> compilation -> execution ,因此在執行之前 會將所有 error 在 parsing, compiling 階段被抓出來;
先說結論,JavaScript 是 interpreted language (直譯式語言)。
但!藉由 JS VM ( engine ) parsing, compiling, and executing 的論點,本書作者認為 JS 是 compiled language。
搞得我好混亂 ... ,今天先將 engine 如何 parsing -> compiling -> executing 畫出來,明天再繼續:
來看看 JS 如何在 engine 上運作:
[ 參考 ]