我正在开展一个更大的项目,我遇到了阵列问题,如下所示。
var x = new Array();
x = [5, 2];
function doStuff(a){
a[0]++;
console.log(a);//Prints [6, 2]
}
doStuff(x);
console.log(x);//Prints [6, 2] when it should print [5, 2]
如何在不修改原始数据的情况下将数组传递给函数?
答案 0 :(得分:0)
您传递给doStuff
的内容是数组的引用。您实际上并没有传递数据。
您必须显式复制数组,以便不修改源代码:
var x = [5, 2]; // No need to use the `Array` constructor.
function doStuff(a) {
var x = a.slice(0); // Copy the array.
x[0]++;
console.log(x); // Prints [6, 2]
}
doStuff(x);
console.log(x); // Prints [5, 2]