zoukankan      html  css  js  c++  java
  • JS变量作用域问题

    案例1:

    var a = 1;
        function test1(){
            var a = 2;
        }
        console.log("a = " + a);//== 1

    1.输出原因:未调用test1(),使得var a= 2,未运行.所以输出结果为1.

    案例2:

    var b = 1;
        function test2(){
            var b = 2;
        }
        test2();
        console.log("b = " + b);//==1

    2.此处调用了函数test2,1),输入结果为:1 ,因为 var a= 2 是在函数体test2()内定义的,在JavaScript中,变量的作用域为函数体,故,此处a=2的,对函数外部无影响.

    案例3:

    var c = 1;
        function test3(){
             c = 2;
        }
        test3();
        console.log("c = " + c);//==2

    3.此处输出结果为: 2, 因为这里test3内部并未重新定义c,而是直接给c赋值,被赋值的c寻找下看改变了哪个c的值,发现函数内部再无c,就扩大范围到函数外面寻找(变量提升),直接把最开始的c值改变.

    案例4:

    var d = 1;
        function test4(d){
            d = 2;
            console.log("d = " + d)//==2
        }
        test4(d);
        console.log("传参d后 :d = "+d);//==1
     var f = 1;
        function test5(e){
            f = 2;
        }
        test5(f);
        console.log("传参f后: f = " + f);//==2

    4.此处,函数体test4的内部输出2,外部输出1,比案例3多了传参,还是变量提升问题,test4内部的d被赋值后,先在函数test4内部寻找d,找到参数d,停止继续寻找.在test5中,f在函数内部找不到f,向外寻找f,改变f的值为2.

  • 相关阅读:
    37. 解数独
    皮尔逊相关系数的计算以及数据的描述性统计
    商业微信小程序开发实战---1
    51. N皇后
    拟合算法
    216. 组合总和 III
    打印心性
    指针
    第五天
    循环 和 宏
  • 原文地址:https://www.cnblogs.com/6long/p/6044505.html
Copyright © 2011-2022 走看看