var a = {n:1};
var b = a;
a.x = a = {n:2};
console.log(a);
console.log(b);
image.png
解题关键:
对象是引用类型->所有的对象赋值其实都是给了这个对象的引用地址
- 假设 {n:1} 的地址是1000,那么 a 和 b 的地址也就是1000。假设 {n:2} 的地址是1002
{n:1} - 1000
a - 1000
{n:2} - 1002
b - 1000
- 点的优先级高于等号 a.x 会先执行,然后 a = {n:2} 执行,所以:
{n:1, x:} - 1000
a - 1002
{n:2} - 1002
b - 1000
- a = {n:2} 执行后,又赋值给 a.x,所以:
{n:1, x:{n:2}} - 1000
a - 1002
{n:2} - 1002
b - 1000
网友评论