如果JavaScript对象是通过引用分配的,则第二个console.log不应显示obj2 = {c:3}
let obj1 = {a:1} let obj2 = {b:2} obj2 = obj1 console.log(obj2) // {a:1} obj1 = {c:3} console.log(obj2) // still {a:1}
所以首先您要拥有这个(两个引用都指向同一个对象):
obj1 => {a:1} <= obj2
[执行obj1 = {c:3}时,您做2件事:
obj1 = {c:3}
obj1 =x=> {a:1}
obj1 => {c:3}
请注意,obj2不变(仍指向同一事物):obj2 => {a:1}
obj2 => {a:1}
所以console.log(obj2)应该仍然是= {a:1}
console.log(obj2)
{a:1}
总之,变量引用已更改,但内存地址未更改: