寫該系列文章的初衷是「讓每位前端工程師掌握高頻知識點,爲工做助力」。這是前端百題斬的第8斬,但願朋友們關注公衆號「執鳶者」,用知識武裝本身的頭腦。前端
下面將以V8爲例,來闡述一下JavaScript代碼的執行過程,其整個過程以下所示:前端工程師
整個過程主要分爲如下幾個步驟:
- 詞法分析,該步驟是將一行行的源碼拆解成一個個token(token指的是語法上不可能再分的、最小的單個字符或字符串);
- 語法分析,其做用是將生成的token數據根據語法規則轉換爲AST;
- 有了AST後,V8就會生成該段代碼的執行上下文;
- 解釋器根據AST生成字節碼(字節碼是介於AST和機器碼之間的一種代碼);
- 生成字節碼以後進行執行階段,解釋器會逐條解釋執行。在執行字節碼的過程當中,若是發現熱點代碼(例如一段代碼被重複執行屢次),後臺的編譯器就會把這段熱點的字節碼編譯爲高效的機器碼,而後再次執行這段優化的代碼時,只需執行編譯後的機器碼便可,提高代碼的執行效率。
1.若是以爲這篇文章還不錯,來個分享、點贊吧,讓更多的人也看到優化
2.關注公衆號執鳶者,與號主一塊兒斬殺前端百題。spa