var a = {name:"a"}
var b = {name:"b"}
function changeObj(obj){
obj = b;
}
changeObj(a)
console.log(a) //{name:"a"}
以上代碼中,兩個(gè)對象a,b ,然后 對 a 進(jìn)行 函數(shù)操作,如果是引用傳遞的話,就相當(dāng)于 a=b, console.log(a)的結(jié)果應(yīng)該是{name:"b"}。但是結(jié)果并非如此。
比較簡單理解是,上面代碼中 a 和 函數(shù)中obj 都是指向同一個(gè)實(shí)例{name:"a"},但是 obj 是 a 的引用副本。函數(shù)中只是改了a 引用副本 obj的指向,并沒有改變a的指向。所以a還是指向{name:"a"}