let a = { n: 1 }
a.x = a = { n: 2 }
console.log(a.x);
/**
这道题打印undefined
第一行
开辟了堆内存o1, 存储{n:1}
第二行
a.x 指向后续的运算结果, 即此时o1.x = undefined
a = {n:2}, 即开辟了堆内存o2, 存储{n:2}, a指向o2
a.x即o1.x = {n:1,x:{n:2}}
a = {n:2}, 即o2 = {n:2}
console.log(a,x) 即o2.x为undefined
要点在于,a.x指向的是o1的内存,而a后续指向的是o2的内存, 打印时a的指向已经改变为o2
*/