• 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)

    通过关键字var声明在函数内部的变量,只在函数体内有定义,是局部变量。局部变量在函数体外是不可见的,在作用域外引用会抛出引用错误(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

  • 相关阅读:
    HDU 1242——Rescue(优先队列)
    [LeetCode] Rectangle Area
    iOS 开发百问(6)
    lucene入门查询索引——(三)
    lucene入门创建索引——(二)
    lucene简介——(一)
    Java基础打包以及批处理命令运行
    Maven从私服上下载所需jar包——(十四)
    Maven部署dao工程到私服上——(十三)
    Maven私服安装及配置——(十二)
  • 原文地址:https://www.cnblogs.com/f6056/p/11813986.html
Copyright © 2020-2023  润新知