左邊為原數組,右邊為array.reverse()的結果:
函數很簡單,但是
var temp = ChartConfig.getMonthData();
$scope.monthList = temp.reverse();
console.log('ChartConfig.getMonthData() '+ChartConfig.getMonthData());
console.log('$scope.monthList '+$scope.monthList);
這段代碼在反復運行時,卻出現了問題,結果如下:
temp做的倒序運算,卻改變了原數據,可以猜測是引用傳遞而不是值傳遞
再把函數中的原數據打印看看:
getMonthData: function () {
console.log("函數中原數據 "+scope.chartConfig.xAxis.categories);
return scope.chartConfig.xAxis.categories;
}
兩次運行結果:
可見,在賦值后,每次調用reverse都會重新復制,而且能改變原數組元素。
要想多次運行得到一樣的排列順序,必須在某一地方打斷引用傳遞,具體怎么做還沒想到