作用域链和闭包

98 阅读1分钟

作用域:块级作用域和全局作用域

  1. 作用域链,通过以下例子解释什么事作用域链

    function bar() {
        console.log(myname)
    }
    function foo() {
        var myname = '小明';
        bar()
    }
    var myname = '小李';
    foo();
    // 最后输出的是 '小李'
    
    • 每一个作用域内部都有一个外部引用outer
    • outer是由词法作用域链决定的,跟函数在哪里调用没关系,换句话说就是跟函数在哪声明有关系
    • 上面的代码bar和foo的外部引用都指向全局作用域,因此最后输出的是小李,
    • 这个查找的链条被称为作用域链