我有这段代码片段,我不知道变量值的变化原因。
while (increment > 0) {
for (i = increment; i < n; i++) {
var unsorted = list;
console.log(unsorted + " -> unsorted" + i);
var temp = list[i];
var j = i;
while (j >= increment && list[j - increment] > temp) {
list[j] = list[j - increment];
j -= increment;
}
list[j] = temp;
console.log(unsorted + " -> must not change" + i);
console.log(list + "-> must not be the same below");
}
}
当我再次记录变量unsorted
时,值已更改?为什么呢?
答案 0 :(得分:5)
你只有一个阵列。
var unsorted = list
创建第二个引用,指向相同的数组实例。
相反,您可以调用list.slice()
,它返回数组的(浅)副本。