0

変数の値が変更された理由がわからないこのコード スニペットがあります。

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を再度ログに記録すると、値が変更されましたか? なぜ?

4

1 に答える 1

5

アレイは 1 つしかありません。

var unsorted = list同じ配列インスタンスを指す 2 番目の参照を作成します。

list.slice()代わりに、配列の (浅い) コピーを返すを呼び出すことができます。

于 2013-03-17T14:29:48.770 に答える