左邊爲原數組,右邊爲array.reverse()的結果:javascript
函數很簡單,可是java
var temp = ChartConfig.getMonthData();
$scope.monthList = temp.reverse();
console.log('ChartConfig.getMonthData() '+ChartConfig.getMonthData());
console.log('$scope.monthList '+$scope.monthList);
這段代碼在反覆運行時,卻出現了問題,結果以下:數組
temp作的倒序運算,卻改變了原數據,能夠猜想是引用傳遞而不是值傳遞函數
再把函數中的原數據打印看看:spa
getMonthData: function () {
console.log("函數中原數據 "+scope.chartConfig.xAxis.categories);
return scope.chartConfig.xAxis.categories;
}
兩次運行結果:blog
可見,在賦值後,每次調用reverse都會從新複製,並且能改變原數組元素。ip
要想屢次運行獲得同樣的排列順序,必須在某一地方打斷引用傳遞,具體怎麼作還沒想到get