问题:简述输出以下代码的执行结果并解释为什么 ?
var a = { n: 1 };
var b = a;
a.x = a = { n: 2 };
console.log(a.x)
console.log(b.x)
答案:
undefined
{ n: 2 }
解析:
核心点为:a.x = a = { n: 2 };
这是一个复合赋值操作,执行顺序为从右到左
a = { n: 2 };
⭐️ a.x = a 这其中的 a.x 中的 a 还是旧值,即跟 b 指向的对象
所以 a.x = b.x = a
所以最后 a = { n: 2 }; b = { n: 1, x: { n: 2 } }
可以将 a.x = a = { n: 2 }; 分成如下代码:
a.x = { n: 2 }
a = { n: 2 };