zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    子序列自动机学习笔记
    P4709 信息传递 解题报告
    斯坦纳树学习笔记
    NOIP2021 游记
    P5206 [WC2019]数树 解题报告
    CF1205D Almost All 解题报告
    设计模式原来如此策略模式(Strategy Pattern)
    再次站起,继续开博
    Java原来如此反射机制
    Java原来如此随机数
  • 原文地址:https://www.cnblogs.com/f6056/p/11813986.html
Copyright © 2011-2022 走看看