1
var obj = { arr: [{ x: 17 }] };
var z = obj.arr;
z = [{ x: 25 }];
console.log(obj.arr[0].x);
控制檯打印出17可以有人解釋我怎麼樣? 按我的知識z的參考obj.arr和重新初始化Z,控制檯應該打印出25在JS中通過引用複製 - 爲什麼這個代碼17的輸出?
var obj = { arr: [{ x: 17 }] };
var z = obj.arr;
z = [{ x: 25 }];
console.log(obj.arr[0].x);
控制檯打印出17可以有人解釋我怎麼樣? 按我的知識z的參考obj.arr和重新初始化Z,控制檯應該打印出25在JS中通過引用複製 - 爲什麼這個代碼17的輸出?
聲明
z = [{ x: 25 }];
將取代Z的前值。那時,z已經不再與「obj」有關。
如果你想通過z
改變obj
,你會需要像
z[0].x = 25;
這個頭銜是太可怕了,創建一個可搜索的標題,並在您的文章的正文中添加你的榜樣。編輯:後編輯但OP需要明白這 –
設置'z'爲'obj.arr'後立即重新將其設置爲一個全新的陣列。這不會影響'obj.arr'。 – Pointy
我以爲z引用了obj.arr,因爲它是一個數組。你能解釋一下如何通過引用複製工作在JS中,尤其是引用內部對象屬性。 – yoyo44