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

来源:3-1 [JavaScript]block语句、var语句

qazxcvbnmlp

2015-03-25 07:59

为什么这样设计?

写回答 关注

6回答

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

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

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

    Timi_S...

    我已经看到3-4的严格模式这一章了,突然想到如果我的推断是对的,那么在严格模式下应该不能使用这种语法,结果应验了我的想法,在严格模式中var a = b = 1;会报错。

    2019-02-07 07:26:08

    共 2 条回复 >

  • 梨花夜雨酱
    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没有

    林中飞虎

    b=5是全局变量,var a=b是局部变量所以a在外部是访问不到的

    2017-03-29 14:41:30

    共 1 条回复 >

  • 慕侠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;

    旋律丶秋凉

    你这样说有问题好吧,a和b在函数里面都是number

    2017-05-05 21:40:03

    共 1 条回复 >

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

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

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281112 学习 · 1020 问题

查看课程

相似问题