1. 程式人生 > >重溫JS預編譯的四個步驟

重溫JS預編譯的四個步驟

JS是解釋型語言,執行過程分三步:

一、語法分析(檢查程式碼是否存在語法錯誤);

二、預編譯(程式碼執行之前,在記憶體中開闢空間,存放變數與函式);  

三、解釋執行(執行JS程式碼);

理解預編譯的過程,對於理解作用域鏈、閉包、this指向、原型鏈至關重要,它們是相輔相成的。

預編譯分為四步:

1、建立AO物件

就是隱式的建立一個AO(Activation Object)空物件。

2、查詢形參和變數宣告,將形參名和變數名作為AO物件的屬性,值為undefined

注意此處是變數宣告(必須帶var),只是查詢形參名和變數宣告名不賦值。

3、將形參與實參統計

即修改AO物件中屬性名為形參的值為傳入的實參,如果沒有形參此步略過。

4、查詢函式宣告,函式名作為AO物件的屬性,函式體作為的值

此處是函式宣告,而非匿名函式和函式表示式。

 

總結:預編譯過程就是查詢變數宣告、形參和函式宣告的過程,並不初始化賦值,在解釋執行階段才會進行初始化 。