1
語法分析 →
2 預編譯 →
3 解釋執行
預編譯四部曲:
1. 函式在執行的瞬間,生成乙個執行期上下文 (active object),簡稱ao;
2. 分析引數
2.1 函式接收形式引數,新增到ao的屬性,並且這個時候值為undefine,例如ao.age=undefined;
2.2 接收實參,新增到ao的屬性,覆蓋之前的undefined;
3. 分析變數宣告,如var age;或var age=23;
3.1 如果上一步分析引數中ao還沒有age屬性,則新增ao屬性為undefined,即ao.age=undefined;
3.2 如果ao上面已經有age屬性了,則不作任何修改;
4. 分析函式的宣告,如果有function age(){};把函式賦給ao.age ,覆蓋上一步分析的值;
執行期上下文:
當函式執行時,會建立乙個稱為執行期上下文的內部物件。乙個執行期上下文定義了乙個函式執行時的環境,函式每次執行時對應的執行上下文都是獨一無二的,所以多次呼叫乙個函式會導致多個執行上下文,當函式執行完畢,它所產生的執行上下文被銷毀。
JS預編譯 函式預編譯和全域性預編譯
預編譯發生在函式執行前一步 建立ao物件 執行期上下文 找形參和變數宣告,將變數和形參名作為ao 屬性名,值為undefined 將實參值和形參統一 在函式體裡面找函式宣告,值賦予函式體 結果 預編譯過程 函式馬上要執行,但是還沒執行 首先建立ao物件,也就是函式它產生的儲存空間庫 ao,b und...
函式預編譯
函式預編譯 函式預編譯的步驟 1 語法分析 2 預編譯 3 解釋執行 當函式執行時,會建立乙個稱為執行期上下文的內部物件 go和ao 乙個執行期上下文定義了乙個函式執行時的環境,函式每次執行時對應的執行上下文都是獨一無二的,所以多次呼叫乙個函式會導致多個執行上下文,當函式執行完畢,它所產生的執行上下...
js的預編譯
預編譯發生在函式執行前一刻 預編譯執行的步驟 1建立執行期上下文,activation object 即ao 2找形參和變數宣告,將形參和變數宣告做為ao的屬性名,尚未賦值,值為 undefined 3將形參和實參相統一,即把實參的值傳到形參裡面去 4在函式體裡面找函式宣告,賦值函式體 functi...