• 全局变量与局部变量理解


    js 关于全局变量和局部变量的简单理解

     

     1.简单来说在  函数里边定义的变量是局部变量,在函数外边访问不到; 全局变量是在函数外边的,在函数内外都可以被访问;

    复制代码
    var a = 10;
    
            function test() {
    
                var b = 100;
                console.log(a);//打印结果是10
                a=100;        //a前面没有var 所以这是全局变量。执行函数之后被赋值。
                
            }
            test();
            console.log(a); //打印结果为100
            console.log(b);//报错 b is not defind




      var a = 10;
    
        function test() {
    
            var b = 100;
            console.log(a);//打印结果是undefined
            var a=100;        //a有var 所以这是局部变量。执行函数之后被赋值
    
        }
        test();
        console.log(a); //打印结果为10
        console.log(b);//报错 b is not definded
    复制代码

    说明: 因为a 是全局变量所以在函数内部可以被访问且被赋值;第一次打印结果为10;

                执行函数后a的值变为100 ;

                b是局部变量;在函数外部被打印,访问不到b的值 所以报错;

    2.如果局部变量和全局变量的变量名相同的情况;

    复制代码
     1 var a = 10;
     2 
     3         function test() {
     4 
     5             console.log(a);//打印结果为undefind
     6             var a = 100;
     7             console.log(a);//打印结果为100
     8 
     9         }
    10         
    11         test();
    12 
    13         console.log(a);//打印结果为10
    复制代码

    说明:1.如果局部变量的变量名和全局变量名形同,在函数内部变量值全部指向局部变量;

              2.第5行结果为undefind;因为只要局部变量a被声明,a就指向局部变量,但是打印在赋值之前,结果为undefind;

                第二次打印结果在赋值之后 为100;

               要想改变全局变量a 的值,可以用window.a ;

              3.第三次打印在函数外边,所以打印全局变量a,值为10;

    3.关于参数问题;参数也是局部变量;

    复制代码
     1 var a = 1;
     2 
     3         function test(a) {
     4 
     5             a=100;
     6             console.log(a);//打印结果为100
     7             return a;        
     8         }
     9         
    10         test(a);
    11 //        a=test(a);
    12 
    13         console.log(a);//打印结果为1
    复制代码

    说明:函数的形参和全局变量重名;既然参数也是局部变量,那函数内部对于a的操作都指向局部变量a影响不了全局变量a,

              所以13行输出1;第5行输出100;

             浅显的理解就是参数就是引用变量的值,在函数内部进行加工,其实不改变变量的值;(这里是值类型的参数传递情况可以这么理解);

             如果是引用类型的参数传递;就会影响到全局变量的值了;(这个和数据存储有关);

  • 相关阅读:
    113.dynamic_cast 虚函数 通过子类初始化的父类转化为子类类型
    112.虚函数强化
    111.final与override
    110.纯虚函数
    109.虚函数与析构构造
    custom-ubuntu-server-iso
    定制ubuntu的时候修改proseed
    centos使用U盘做启动盘
    fio的配置使用
    持续运行一个命令-并且将结果输出到文本
  • 原文地址:https://www.cnblogs.com/hy96/p/11396698.html
Copyright © 2020-2023  润新知