var a = 42, b;
b = a++;
console.log(a);//43
console.log(b);//42
以及如下js代码
var a = 42, b;
b = a++, a;
a; // 43
b; // 42
js操作符优先级不应该先算a++然赋值给b吗?a逗号隔离了应该还是42啊
谷歌也没找到,请详细解释一下a++的 后副作用
原书的解释,其中a++的 后副作用
是什么鬼???:
等一下!为什么这改变了赋给 b 的值?
因为 , 操作符要比 = 操作符的优先级低。所以, b = a++, a 被翻译为 (b = a++), a 。因为
(如我们前面讲解的) a++ 拥有 后副作用,赋值给 b 的值就是在 ++ 改变 a 之前的值 42 。
重点不是优先级。。。。。
这一段,因为执行了
a++
后 a 已经是 43 了,但是根据逗号操作符
始终将最右边的返回出去,所以这里返回的是再看
是否记得逗号还有个作用:分别赋值。
这是其一,剩下的就是,
a++
和++a
的问题,根据运算, b = a++; 其实是如下。