JavaScript连等赋值问题

var a = {n:1};  
var b = a; // 持有a,以回查  
a.x = a = {n:2};  
alert(a.x);// --> undefined  
alert(b.x);// --> {n:2}</span>
请问结果为何是这样?

我的理解是连等赋值从右向左运算的,当a被复制为{n:2}之后,

为什么a.x中的a仍然指向{n:1}?


a = a.x = {n:2} a.x= a = {n:2} 的结果是一致的原因是,属性访问表达式优先级高于“ = ”号,无论哪种赋值方式都是先执行 a.x ,所以 a 指向是 {n:1} ,添加属性 x 之后 , 被重新赋值 {n:2} 对象。


原文:点击打开链接

猜你喜欢

转载自blog.csdn.net/xukun5137/article/details/52803788