在每個物件中進行屬性查詢的時候,還會使用該物件的原型域鏈(後續將會講解原型鏈)。在一個執行上下文,與其關聯的作用域鏈只會被 with 語句和 catch 子句影響。
【範例1】在下面範例中,通過多層巢狀函數設計一個作用域鏈,在最內層函數中可以逐級存取外層函數的私有變數。var a = 1; //全域性變數 (function () { var b = 2; //第1層區域性變數 (function () { var c = 3; //第2層區域性變數 (function () { var d = 4; //第3層區域性變數 console.log(a + b + c + d); //返回10 }) () //直接呼叫函數 }) () //直接呼叫函數 }) () //直接呼叫函數在上面程式碼中,JavaScript 引擎首先在最內層活動物件中查詢屬性 a、b、c 和 d,從中只找到了屬性 d,並獲得它的值(4);然後沿著作用域鏈,在上一層活動物件中繼續查詢屬性 a、b 和 c,從中找到了屬性 c,獲取它的值(3)······以此類推,直到找到所有需要的變數值為止,如圖所示。