变量搜索原则

在代码的运行过程中, 如果访问某一个变量,那么:

  1. 首先在当前链上找

    • 如果有,则停止查找
    • 如果没有, 在 n-1 级上找( 在函数内部允许访问定义在函数外部的变量 )
  2. 如此往复, 直到 0 级链

    • 如果找到, 则结束寻找, 直接获得该链上变量的数据
    • 如果还没有 抛出异常。

案例:

var num = 456;
function f() {
    num = 678;
    function foo() {
        var num = 999;
        console.log(num); //
    }
    foo();
    console.log(num); //
}

f();