1.2.1.8.範圍鏈

  • 執行下面程式碼

function b() {
console.log(myVar);
}

function a() {
var myVar = 2;
b();
}

var myVar = 1;
a();
  • 會看到

    • 1

  • 解析

    • 每個Execution context都有自己所參照的外部環境, 當需要某個執行環境內的程式碼的變數, 而無法找到變數時, 他會到外部環境去尋找變數

    • 搜索範圍鏈到外部環境

      • 每個Execution context參照的外部環境會依照函數的物理位置而變動

        • b()會參照的外部環境為Global Execution context

        • a()會參照的外部環境為Global Execution context

    • 若找不到變數會沿著範圍鏈一直向下搜尋

Last updated