• 全局变量和局部变量


    全局变量:指定义于function 外部的 var +变量名的外部声明(window对象)

    例如:var a =100;function test(){ console.log(a)} ; test();      //a输出为100

     全局变量的声明主要有2种方式:

    1.显示声明    如:var a =100;function test(){ console.log(a)} ; test();

    2.隐示声明    如 var a=100; function test() { a=10; console.log(a)} ;console.log(a)  //输出 10  10

    其中a=10为隐示声明一个全局变量,尽管它被写在function里面,只有当function被调用时才会变成全局变量

    经典例题:

    var a = 10;                  //声明和定义一个全局变量

    function test(){

        a = 100;                    //表面上为:全局变量的隐示定义

        console.log(a);                   //打出100

        console.log(this.a);              //打出10

        var a;                     //声明一个局部变量

        console.log(a);                  //打出100

    }       

    test();

    console.log(a);                  //打出10

    运行结果为: 100   10  100  10

    解析:javascript在执行前会对所有的声明部分进行分析,从而确定其作用域。所以:先分析 var a=10;  var a 。得到var a=10为全局变量  var a 为局部变量。所以当执行到 a=100时,内部已经确定a为局部变量的定义。所以a =100不能理解为全局变量的隐示定义。

    其中this指针指向的是函数调用者,而他的调用者在全局作用域,所以this.a指向全局的a即为10

  • 相关阅读:
    01背包----简单DP
    小a的计算器
    BZOJ3160 万径人踪灭 【fft + manacher】
    BZOJ3527 [Zjoi2014]力 【fft】
    BZOJ2194 快速傅立叶之二 【fft】
    BZOJ2123 [Sdoi2013]森林 【主席树 + 启发式合并】
    BZOJ3720 Gty的妹子树 【树分块】
    洛谷P1822 魔法指纹 【分块打表】
    洛谷3396 哈希冲突 【分块】
    分块算法
  • 原文地址:https://www.cnblogs.com/8080zh/p/9227826.html
Copyright © 2020-2023  润新知