问答详情
源自:3-1 [JavaScript]block语句、var语句

function内,var a = b = 1; b 为什么会是全局变量?

为什么这样设计?

提问者:qazxcvbnmlp 2015-03-25 07:59

个回答

  • Bosn
    2015-03-26 11:47:45
    已采纳

    这是语法规则决定的,其实是一个非常不好的设定。

    至于为什么这么设定,这个就好像为什么你的名字就是这样。。。。因为就是这么起的。

  • 梨花夜雨酱
    2017-06-09 03:10:41

    赋值是从右往左进行的,也就是说这一行先执行b=1,这时候b就是全局变量了,没有被var过。然后是var a = b;

    a被声明了,是局部变量。

  • VALR
    2017-03-23 09:46:34

    (function(){var a=b=5})();

    console.log(b);

    console.log(a);

    为何b有值,a没有

  • 慕侠1452743
    2016-11-15 19:08:57

    var a=b=1;计算优先级 创建全局变量b=1,再在函数中定义一个变量a,a=b

  • 世平阜康
    2016-02-23 19:18:53

    应为你赋值给a,b=1,是不存在的,var a=b=1,就可以等同于,b=1;var a=b;

  • qazxcvbnmlp
    2015-03-25 08:18:26

    是因为下一节提到的给未声明的变量赋值,此变量就变为全局变量?那么严格模式下应该不可以这样声明的吧。