天天看点

JavaScript之变量作用域变量作用域

变量作用域

  • 变量作用域
    • 在函数体内声明的变量,在函数外无法使用
    • 不同函数内的同名变量互不影响
    • 内部函数可以访问外部函数的变量,反之不行
    • 内部函数与外部函数变量命名冲突

变量作用域

在JavaScript中国,var声明的变量是有作用域的

在函数体内声明的变量,在函数外无法使用

function foo(){
            var x = 1;
        }
        console.log(x);//x is not defined
           

不同函数内的同名变量互不影响

function foo1(){
        var y = 1;
        console.log(y);
    }
    function foo2(){
        var y = 2;
        console.log(y);
    }
    foo1();//1
    foo2();//2
           

内部函数可以访问外部函数的变量,反之不行

function bar(){
    var x = 1;
    function bar2(){
        var y = 2;
        console.log(x);//1
    }
    bar2()
    console.log(y);//y is not defined
}
bar();
           

内部函数与外部函数变量命名冲突

function foo3(){
    var x = 3;
    function foo4(){
        var x = 4;
        console.log(x);//4
    }
    foo4();
    console.log(x);//3
}
foo3()
           

这说明JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。

继续阅读