1. imply global 暗示全域性變數:任何變數,未經宣告就賦值,此變數為全域性物件(window)所有
例:a = 10; --> window.a = 10; (不管此變數是在全域性賦值的,還是區域性賦值的)
2. 一切宣告的全域性變數都是window的屬性 --> window即全域性的
var b = 123; --> window.b = 123;
--> window
預編譯發生在函式執行的前一刻
--> 解釋一句,執行一句
函式體預編譯過程:1. 建立ao物件(activation object)-->生成執行期上下文
2. 找形參和變數宣告,將形參和變數宣告作為ao物件的屬性名,值為undefined
3. 將實參和形參值統一
4. 在函式體裡找函式宣告,作為go物件的屬性名,值為函式體 --> 注意:函式表示式 ≠函式宣告
全域性預編譯過程:1. 生成go物件(global object)===window
2. 找變數宣告,作為go物件的屬性名,值為undefined
3. 找函式宣告,作為go物件的屬性名,值為函式體
JS之預編譯 詳解
語法分析 預編譯解釋執行 語法分析就是js引擎去檢查你的 是否有語法錯誤,解釋執行顧名思義就是執行你的 當然最重要的還是預編譯,那麼預編譯是在什麼時候開始發生呢?接下來就是重點了。首先要明白什麼是函式宣告?什麼是變數賦值?functiona 函式宣告 vara function 變數賦值 函式表示式...
JS預編譯 函式預編譯和全域性預編譯
預編譯發生在函式執行前一步 建立ao物件 執行期上下文 找形參和變數宣告,將變數和形參名作為ao 屬性名,值為undefined 將實參值和形參統一 在函式體裡面找函式宣告,值賦予函式體 結果 預編譯過程 函式馬上要執行,但是還沒執行 首先建立ao物件,也就是函式它產生的儲存空間庫 ao,b und...
JS 函式預編譯
1 語法分析 2 預編譯 3 解釋執行 預編譯四部曲 1.函式在執行的瞬間,生成乙個執行期上下文 active object 簡稱ao 2.分析引數 2.1 函式接收形式引數,新增到ao的屬性,並且這個時候值為undefine,例如ao.age undefined 2.2 接收實參,新增到ao的屬性...