JS -- 一道堆栈练习题

296 阅读1分钟

引用赋值:只是赋值的栈内存里面变量值(存的是堆内存的地址值).

进行赋值操作时,先创建变量(左边),再创建值(右边),然后将两边关联起来.

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, ab的联系也断开了。
console.log(a.x) //a = {n: 2}, 所以a.x = undefined
console.log(b)   //b = {n: 1, x: {n: 2}}

图解

无标题.png