一起学JavaScript - 连续赋值优先级的问题

代码:

var a = {n:1};
a.x = a = {n:2}
console.log(a.x)

结果:

undefined

按照赋值从右到左的顺序,你一定以为a.x输出的是一个对象对不对,但是为啥是undefined呢,

原因是因为JS中赋值表达式碰到 .= 的时候 , . 的优先级比较高,所以上面的赋值运算这么表示一下就可以看懂了

a.x = (a = {n: 2})

a.x 在执行过程中其实已经被赋值了,只不过它的值是一个 (a = {n:2})的赋值表达式,程序继续执行这个表达式的时候,a又被改为了{n: 2},所以这时候输出a.x 自然是undefined了。

猜你喜欢

转载自blog.csdn.net/cainiao1412/article/details/105681175
今日推荐