JS 函式預編譯

2021-08-21 09:32:35 字數 586 閱讀 4705

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...