js的預編譯

2021-10-01 15:56:06 字數 730 閱讀 7810

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

預編譯執行的步驟:

1建立執行期上下文,activation object ,即ao

2找形參和變數宣告,將形參和變數宣告做為ao的屬性名,尚未賦值,值為 undefined

3將形參和實參相統一, 即把實參的值傳到形參裡面去

4在函式體裡面找函式宣告,賦值函式體

function demo(a, b)

function e()

}demo(1)

// 1.建立ao物件{}

// 2.找形參和變數宣告

ao =

//3. 形參實參想統一

ao =

// 4.在函式體裡面找函式宣告,值賦函式體

ao = ,

e: function e()

} // 5.解釋執行全域性的預編譯,發生在全域性執行前 ==> 開啟瀏覽器window物件就生成了

過程類似於ao

1先建立語法

go{}

2找變數宣告,變數宣告做為ag的屬性名,尚未賦值,值為undefined

3在函式體裡面找函式宣告,賦值函式體

var a = 10;

function bb() ;

bb();

console.log(b);//10

1 go{}

2 go

3 go,

}

js的預編譯

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

js的預編譯

1.語法分析 通篇掃瞄看有沒有語法錯誤 2.預編譯 3.解釋執行 預編譯有兩種情況 一種是全域性的預編譯 一種是函式的預編譯 函式的預編譯 預編譯 函式執行的前一刻 下面 再預編譯的過程中發生了什麼變化呢 function demo num var num 13 console.log num 13...

js的預編譯

js執行的三步 語法檢查,預編譯,解釋執行.js預編譯前 window物件 全域性 1.任何位置上的變數未宣告直接賦值是全域性變數,發到window裡 2.在函式外宣告的變數也是全域性,放到window裡.js預編譯時 對函式來說 1.生成函式的ao物件 作用域 2.把函式的形參和變數宣告放到ao物...