JS函数在函数

时间:2016-11-11 14:29:07

标签: javascript arrays

我正在开展一个更大的项目,我遇到了阵列问题,如下所示。

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]

如何在不修改原始数据的情况下将数组传递给函数?

1 个答案:

答案 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]