左边为原数组,右边为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