簡單來說就是一個東西列表。那麼這個東西列表是怎麼來的呢?每次挪用js函數時,編譯器情況都會為這個js函數創建一個新的東西(高低文東西)來保存部分變量,並且把這個新的東西增加到感化域鏈中。當函數前去時,就從感化域鏈中將綁定變量的東西移除。
js權威指南中的一段話很好的解釋這個不雅點,摘錄如下:
在js的頂層代碼中(即不包含在任何函數定義內的代碼),感化域鏈由一個全局東西構成。在不包含嵌套的函數體內,感化域鏈上有兩個東西,第一個是定義函數參數跟部分變量的東西(高低文東西),第二個是全局東西。在一個嵌套函數體內,感化域鏈上至少有三個東西。
東西感化域鏈創建規矩,當定義一個函數時,它現實上保存一個感化域鏈。當挪用這個函數時,它創建一個新的東西來存儲它的部分變量,並將這個東西增加至保存的那個感化域鏈上,同時創建一個新的更長的表示函數挪用感化域的"鏈"。
對嵌套函數,每次挪用外部函數時,外部函數會重新定義一遍。因此每次挪用外部函數時,感化域鏈都差別。每次挪用外部函數時,固然外部嵌套函數的代碼沒變,但是關聯這段代碼的感化域鏈不雷同了,所以外部函數也有差別,做永久鏈差別了。