JS中的作用域

遵循“预解析,逐行解读”

//预解析,逐行解读
        alert(a);   //预解析后剩下function a(){alert(4);}
        var a=1;
        alert(a);   //1
        function a(){alert(2);}
        alert(a);   //1
        var a=3;
        alert(a);   //3
        function a(){alert(4);}
        alert(a);   //3

        alert(typeof(a));   //number
 当a为局部变量时
        var a = 1;
        function fn1()
        {

            alert(a);   //undefine
            var a = 2;  //预解析,找到var,局部变量
        }
        fn1();   
        alert(a);   //1
当a为全局变量时
        var a = 1;
        function fn1()
        {
            alert(a);   //1
            a = 2;      //全局变量
        }
        fn1();
        alert(a);   //2

和函数形式不一致,调用未传参

        var a = 1;
        function fn1(a)
        {
            alert(a);   //undefine
            a = 2;      //全局变量
        }
        fn1();  //调用的时没有传参,函数里的为undefine
        alert(a);   //1
和函数形式一致,调用传参
        var a = 1;
        function fn1(a)
        {
            alert(a);   //1
            a = 2;      //全局变量
        }
        fn1(a);     //调用的时候传入1
        alert(a);   //1
自下往上寻找父级变量
        var num = 0;
        function fn1()
        {
            num++;
        }
        function fn2()
        {
            num++;
        }

        fn1();
        fn2();
        alert(num);
取出局部变量
        var str = '';
        function fn1()
        {
            var a = '你好';
            str = a;
        }
        fn1();
        alert(str);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值