JS運行過程,作用域和上下文的作用,自執行函數

兩個作用域

函數定義時確定

1.全局作用域
2.函數作用域

作用:隔離變量,不同作用域下同名變量不會有衝突

JS中沒有塊級作用域

兩個上下文(或稱爲詞法環境)

執行過程中產生

1.全局上下文:一個JS文件有且僅有一個
2.函數上下文:每調用一次產生一個上下文,調用完畢後銷燬

作用:預編譯過程中存儲預處理數據

運行的兩個步驟

1.預編譯過程

預處理數據包括:
1.var對象:var a=10; —預處理—> var a=undefine
2.function : function fun(){} —預處理—> function fun=function(){}
(只有聲明方式定義的函數有效,如上)
3.this

命名衝突時,function優先級最高

這裏寫圖片描述
上下文分析

2.執行過程

命名衝突時,後面的覆蓋前面的

預編譯完成後:1.爲所有變量賦值
2.忽略聲明方式定義的函數聲明方式定義的函數,只處理表達式方式定義的函數,eg:

(function fun(){})();//稱爲自執行函數或立即執行函數

備註:表達式方式定義的函數,即在函數前面加個基本運算符,eg:+ - * / ? () 等等
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章