1.作用域(Scope)
特指變量和函數(shù)的可訪(fǎng)問(wèn)范圍,控制著變量和函數(shù)的可見(jiàn)性和生命周期,在es5中有全局作用域和塊作用域之分,javascript采用詞法作用域,也是靜態(tài)作用域。
靜態(tài)作用域: 是指作用域在詞法分析階段就確定了,不會(huì)改變,也就是說(shuō)詞法作用域取決于源碼。
動(dòng)態(tài)作用域: 是指在運(yùn)行時(shí)根據(jù)程序的流程信息來(lái)動(dòng)態(tài)確立的。
2.上下文(context)
特指this的值,可以使用call(),apply(),bind(),箭頭函數(shù)等改變上下文。this永遠(yuǎn)指向最后調(diào)用它的那個(gè)對(duì)象。
3.作用域鏈
javascript中每個(gè)函數(shù)都表示一個(gè)函數(shù)對(duì)象,函數(shù)對(duì)象有一個(gè)僅共javascript引擎使用[[scope]]屬性,通過(guò)語(yǔ)法分析和預(yù)解析,將[[scope]]屬性指向函數(shù)定義時(shí)作用域中的所有對(duì)象集合,這個(gè)集合被稱(chēng)為函數(shù)的作用域鏈。
相比于作用域---誰(shuí)可以有權(quán)限訪(fǎng)問(wèn)到我(變量和函數(shù)),作用鏈可以理解成我(函數(shù))可以訪(fǎng)問(wèn)付集合。
4.執(zhí)行期上下文(Execution Context)
執(zhí)行某個(gè)具體的函數(shù)時(shí),js引擎都會(huì)創(chuàng)造一個(gè)執(zhí)行上下文(執(zhí)行期作用域鏈)和激活對(duì)象(他們的生命周期和函數(shù)一致,執(zhí)行完即銷(xiāo)毀),每次=執(zhí)行一次,都會(huì)創(chuàng)造一個(gè)執(zhí)行期上下文。但執(zhí)行一個(gè)函數(shù)時(shí),上下文作用域鏈將使用該函數(shù)的作用域鏈進(jìn)行初始化,這些值按照出現(xiàn)的順序復(fù)制到執(zhí)行期上下文鏈中。
5.閉包(Closure)
閉包是javascript最強(qiáng)大的特性之一,他允許函數(shù)訪(fǎng)問(wèn)局部作用域之外的數(shù)據(jù),閉包在日常編碼工作中非常常見(jiàn),但是,他會(huì)對(duì)性能操作影響。
例:圖表顯示作用域鏈和執(zhí)行作用域鏈
??function assignEvents(){
? ? var id = "xdi9592";
? ? document.getElementById("save-btn").onclick =? ? ? ? ? ?function(event) {
? ? ? ? saveDocument(id);
? ? };
}
作用域鏈:

執(zhí)行期作用域鏈:

參考文章:
https://blog.csdn.net/qq_27626333/article/details/78463565
****擴(kuò)展
詞法分析? 語(yǔ)法分析? 編譯執(zhí)行? ?解釋執(zhí)行