關於reverse()和sort()方法的返回值問題
先說結論:reverse()和sort()方法的返回值並不是當前步驟排序后的數組,而是數組的引用。
展示如下:
var arr = [2, 5, 3, 6, 9, 7, 12, 15, 20, 35];
function compare(value1, value2) {
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
var item01 = arr.sort(compare);
// 打印item01步驟
console.log(item01); // 打印出的結果為:[2, 3, 5, 6, 7, 9, 12, 15, 20, 35]
下面我們再增加一個排序步驟:
var arr = [2, 5, 3, 6, 9, 7, 12, 15, 20, 35];
function compare(value1, value2) {
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
var item01 = arr.sort(compare);
var item02 = arr.reverse();
// 仍然打印item01步驟
console.log(item01); // 打印結果為:[35, 20, 15, 12, 9, 7, 6, 5, 3, 2]
證明sort()方法的返回值並不是經過當前步驟排序后的數組,而是數組的引用。雖然引用仍然指向這個數組,但是在console表達式語句前增加一個取反步驟后數組變了,打印的結果也跟着變了