JS的預編譯過程

2022-09-11 00:21:30 字數 908 閱讀 8670

預編譯發生在函式執行的前一刻

預編譯(全域性)

三部曲:

①、生成go物件 (global object)     //  go  ===  window

go②、找形參和變數宣告,將變數和形參名作為go屬性名,值為undefined

③、在函式體裡面找函式宣告,值——賦予函式體

預編譯(區域性)

四部曲:

①、生成ao物件 (activation object  執行期上下文)「作用域」   

ao②、找形參和變數宣告,將變數和形參名作為ao屬性名,值為undefined

③、將實參值和形參統一

④、在函式體裡面找函式宣告,值——賦予函式體

一、imply global  暗示全域性變數:即任何變數,如果變數未經宣告就賦值,此變數就為全域性物件所有。 

二、一切宣告的全域性變數,都歸window所有

三、window就是全域性

四、①函式宣告整體提公升到邏輯最前面

②變數宣告提公升到邏輯最前面

js三部曲

1、依法分析

2、預編譯

3、解釋執行

預編譯的過程

圖一 圖二 預處理 在預處理階段進行的工作是純粹的替換和展開,沒有任何的計算功能和檢查功能,這也正是巨集定義出現在預處理階段的原因。下面我主要說一下巨集定義的優點和缺點 優點 1.速度方面 當巨集定義的是乙個函式時,預處理用複製巨集的 方式代表函式呼叫,省去了引數壓棧 生成組合語言的call 呼叫 ...

js的預編譯

預編譯發生在函式執行前一刻 預編譯執行的步驟 1建立執行期上下文,activation object 即ao 2找形參和變數宣告,將形參和變數宣告做為ao的屬性名,尚未賦值,值為 undefined 3將形參和實參相統一,即把實參的值傳到形參裡面去 4在函式體裡面找函式宣告,賦值函式體 functi...

js的預編譯

函式執行前函式究竟做了什麼?一。函式執行前,首先會通篇檢查有沒有語法或者 寫錯的,如果有就直接報錯,如果沒有就會進行下一步 二。函式的預編譯階段 1.首先會在函式內生成乙個ao物件,2.變數或者形參作為函式的屬性名或者鍵名屬性值是undefined 3.實參給形參 4.函式宣告作為屬性值,屬性名為f...