0
我讀數據結構與算法使用JavaScript通過O'reily和參考VS陣列通過看重它規定如下:陣列通過在Javascript
淺拷貝(兩個數組指向內存中的相同位置):
var nums = [];
for (var i = 0; i < 100; ++i) {
nums[i] = i+1;
}
var samenums = nums;
nums[0] = 400;
print(samenums[0]); // displays 400
深副本:
function copy(arr1, arr2) {
for (var i = 0; i < arr1.length; ++i) {
arr2[i] = arr1[i];
}
}
現在下面的代碼片段將產生預期的結果:
var nums = [];
for (var i = 0; i < 100; ++i) {
nums[i] = i+1;
}
var samenums = [];
copy(nums, samenums);
nums[0] = 400;
print(samenums[0]); // displays 1
爲什麼創建深度副本需要一個功能?
'爲什麼是爲了創建深副本所需的功能' - 因爲這是怎麼了? JavaScript的作品,改變它會打破網絡 –
該功能不是必需的,它只是美觀性和可重用性 –
它不是真正的兩個數組。你的「淺拷貝」根本不是一個副本。而不是「*兩個數組指向內存中的同一位置*」,我們討論*兩個變量指向(或:保持)相同的數組*。如果你想要一個,你可以明確地創建一個新的數組,例如通過'.slice()'或你的'copy([],...)'函數。 – Bergi