首页 > 其他分享 >全局变量与局部变量理解

全局变量与局部变量理解

时间:2023-03-24 20:32:01浏览次数:27  
标签:打印 console log 局部变量 理解 100 全局变量

 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;

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

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

长风破浪会有时,直挂云帆济沧海

标签:打印,console,log,局部变量,理解,100,全局变量
From: https://blog.51cto.com/u_15961676/6148214

相关文章

  • Scrum团队流程学习和理解
    Scrum介绍:  Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作,开发团队在开发一个项目时,团队成员像打橄榄球一样迅速高效,且有系统有组织进行项目开发,团队......
  • 如何理解Walmart VICS 816?
    WalmartVICS是指Walmart采用的一种供应链标准,全称为Vendor-ManagedInventoryCollaborationStandards(供应商管理库存协作标准)。它是一种管理供应链的协作标准,旨在通过提......
  • 论文理解【Offline RL】——【One-step】Offline RL Without Off-Policy Evaluation
    标题:OfflineRLWithoutOff-PolicyEvaluation文章链接:OfflineRLWithoutOff-PolicyEvaluation代码:davidbrandfonbrener/onestep-rl发表:NIPS2021领域:离线强化学习(off......
  • 安全高效 | AIRIOT智慧工地管理解决方案
     建筑工地施工材料、机械设备、工程车、人员各个环节管理相对复杂、建筑业也是安全事故频发的高危行业,安全管控尤为重要。建筑施工单位想要保障安全生产,做好能......
  • AXI4协议理解
    AXI4AXI总线是计算机内部的一种高速总线,主要用于主机(master)和从机(slave)低延迟、高速的数据传输,是由RAM公司设计的为了代替AHB、APB总线而存在的总线标准。AXI可以细分为......
  • 理解MVCC
    MVCC就是多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。为什么需要MVCC呢?数据库通常使用锁来实现隔离性。最原生的锁,锁住一......
  • 从人脑进化理解人工智能的涌现
    引言:上周听了刘嘉老师的分享,越来越认可看懂人工智能需要从脑科学的角度去思考,基于分享的内容、自己的思考、收集的资料整理出本篇文章。惊艳出现的ChatGPT还在被大家吐槽......
  • session的理解和使用
    Session的使用与Session的生命周期1、HttpSession的方法ObjectgetAttribute(String);Enumeration<String> getAttributeNames();long getCreationTime();......
  • Unity中,区别LookAt与LookRotation 一直不太理解的问题.....
    详细的资料可以看这个大佬总结的:参考资料我这里直接用图结合着说:首先呢,我们的主角要看向敌人,下图是还没看向之前:  使用LookAt函数看向敌人后,Z轴看向敌人(也是正面看......
  • 深入理解 Python 虚拟机:字典(dict)的实现原理及源码剖析
    深入理解Python虚拟机:字典(dict)的实现原理及源码剖析在本篇文章当中主要给大家深入介绍一下在cpython当中字典的实现原理,在本篇文章当中主要介绍在早期python3当中的......