JavaScript全局变量与局部变量

Posted 请叫我二狗哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript全局变量与局部变量相关的知识,希望对你有一定的参考价值。

javascript中存储数据值的容器称为变量。根据变量作用域可将变量分为全局变量局部变量

全局变量(Global Variable)

拥有全局作用域,在JavaScript代码中任何地方都有定义的变量,称为全局变量。通过var声明在函数外部的变量为全局变量。JavaScript全局变量是全局对象的属性,这是ECMAScript规范中强制规定的。在Web浏览器中,全局作用域对象为window。

定义全局变量的方法:

方法1:任何函数体外直接声明var声明变量

    //方法1:任何函数体外直接声明var声明变量
    var a = 10;
    var b; 

方法2:直接添加属性到全局对象上。

    //方法2:直接添加属性到全局对象上。在 Web 浏览器中,全局作用域对象为 window。
    window.f = "function";

方法3:直接使用未经声明的变量,以这种方式定义的全局变量被称为隐式的全局变量。

    //方法3:直接使用未经声明的变量,以这种方式定义的全局变量被称为隐式的全局变量。
    c = "golbal"; 

局部变量(Local Variable)

作用域仅在局部代码块的变量,称为局部变量。在函数内部声明的变量只在函数体内有定义,它们是局部变量。局部变量在函数体外是不可见的,在作用域外引用会抛出引用错误(ReferenceError)异常。

    function f(){
      var number=10;
    }
    console.log(number);//=>Uncaught ReferenceError: number is not defined

  

在函数体内,局部变量的优先级高于全局变量。如果在函数内声明的一个局部变量或者函数参数中带有的变量和全局变量重名,那么全局变量就被局部变量所遮盖。这种情况时由于JavaScript作用域链导致的。

    var a="global";
    function f(){
      var a="local";
      console.log(a);
    }
    f();//=>打印"local"

参考资料:

《JavaScript权威指南》变量作用域_P56

以上是关于JavaScript全局变量与局部变量的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript_作用域

JavaScript中局部变量与全局变量的不同

全局变量与局部变量

JS---闭包

javascript定义了一个全局变量,怎么在局部变量中修改该变量的值?

javaScript教程50: 变量查找规则与词法作用域