为了账号安全,请及时绑定邮箱和手机立即绑定

js作用域问题

js作用域问题

xiaoxiaomingming 2016-03-03 16:10:58
var a=1;    function b(){        a =10;        return ;       //function a(){}    }    b();    alert(a);以上alert 10去掉注释    var a=1;    function b(){        a =10;        return ;       function a(){}    }    b();    alert(a);就alert 1    为什么呢?
查看完整描述

1 回答

?
holy_night

TA贡献5条经验 获得超0个赞

经过chrome调试下发现代码运行原理应该是这样

  1. 当执行b()时进入函数b的作用域,然后当执行代码“a=10;”之前a就已经是function了,然后执行a=10;只不过是把function a 赋值为10;跟外部a一点关系都没有,所以实际代码简化如下:

     

     var a=1;

    function b(){

        function a(){}

        a =10;

        return ;

    }

    b();

    alert(a);

 要注意函数声明是提前读取的不是走到最后才声明出函数a!


查看完整回答
反对 回复 2016-03-04
  • xiaoxiaomingming
    xiaoxiaomingming
    我的问题是:为什么注释function a(){}与不注释,a的值为什么不同? 注释掉该函数时,a的值就受到了影响,不注释该函数a的值就没受到影响。 虽然没解决,但还是谢谢了!
  • 1 回答
  • 0 关注
  • 1129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信