var a={h1: '11'};
var b=a;
a=null;
console.log(a,b) //null {h1: "11"}
上例原因:a=null只是取消了引用,而并没有改变堆,b依然指向原来的堆,依然保持旧值。
var a = {n: 1};
var b = a;
a.x = a = {n: 2}; // 等价于 b.x = a = {n: 2};
console.log(a); //{n:2}
console.log(a.x); //undefined
console.log(b); //{n:1,x:{n:2}}
console.log(b.x); //{n: 2}
上例原因:a={n:2}的写法改变了a的引用,而b的引用不变;