作用域

作用域是指的程序源代码中定义变量的区域 JavaScript采用的是词法作用域,也就是静态作用域

静态作用域与动态作用域

因为JavaScript采用的是词法作用域,作用域在定义时已经决定.基于函数创建位置


    var value =1
    function foo() {
        console.log(value)
    }
    
    function bar() {
        var value =2;
        return foo()
    }
    bar() //1

另一个demo

var scope = "global scope";
function checkscope(){
    var scope = "local scope";
    function f(){
        return scope;
    }
    return f();
}
checkscope();
var scope = "global scope";
function checkscope(){
    var scope = "local scope";
    function f(){
        return scope;
    }
    return f;
}
checkscope()();

Javascript函数的作用域执行用到了作用域链,这个作用域链式在函数定义的时候粗行间.嵌套的函数fn()定义在这个作用 作用域链里,其中变量scope一定是局部变量,不管何时何地指定函数f(),这种绑定在执行f()时依然有效