引用赋值:只是赋值的栈内存里面变量值(存的是堆内存的地址值).
进行赋值操作时,先创建变量(左边),再创建值(右边),然后将两边关联起来.
a = b = 3, 相当于 a = 3, b = 3.
let a = {
n: 1
}
let b = a
a.x = a = {
n: 2
} //这里相当于 a.x = {n: 2} a = {n: 2}
//先修改了a的值,给a新增了属性x,值为{n: 2}, 修改a的同时也修改了b
//然后a = {n: 2}, 相当于重新给a开辟了一块新的空间,里面只有一个属性n, a与b的联系也断开了。
console.log(a.x) //a = {n: 2}, 所以a.x = undefined
console.log(b) //b = {n: 1, x: {n: 2}}
图解