Javascript作用域鏈
先介紹執行環境
* 執行環境定義了變量或函數有權訪問的其他數據,決定了它們各自的行爲,每個執行環境都有一個與之關聯的變量對象,該變量對象裏面保存環境中定義的所有變量和函數,每個函數都有自己的執行環境。 *
定義:
- 作用域鏈:當代碼在一個環境中執行時,會創建變量對象的一個作用域鏈
作用:
- 作用域鏈:保證對執行環境有權訪問的所有變量和函數的有序訪問。作用域鏈的前端,始終都是當前執行的代碼所在環境的變量對象
作用域鏈
“`
var glo = ‘global’;
function local() {
var loc = ‘local’;
function tem() {
var tem = 'tempory';
foo = glo;
far = loc;
// 這裏可訪問glo、loc、tem
}
// 這裏可以訪問glo、loc,不能訪問tem
}
// 這裏只能訪問glo
“`
* 上例中:代碼分爲三個執行環境:全局環境、local()局部環境、tem()局部環境,某一個執行環境可以訪問上一級執行環境裏的變量和函數,不能訪問下一級執行環境裏的變量和函數,上例中的作用域鏈爲 window–>{glo、local() –> {loc、tem() –> {tem、foo、far}}}**