我在这里阅读了许多关于“按值”和“按引用”传递将数组发送到 javascript 函数的答案。但是,我在将数组发送到函数并使原始数组保持不变时遇到问题。这个例子说明了这个问题:
function myFunction(someArray)
{
// any function that makes an array based on a passed array;
// someArray has two dimensions;
// I've tried copying the passed array to a new array like this (I've also used 'someArray' directly in the code);
funcArray = new Array();
funcArray = someArray;
var i = 0;
for(i=0; i<funcArray.length; i++)
{
funcArray[i].reverse;
}
return funcArray;
}
我不明白为什么这个函数中的任何东西都应该改变原始数组。
如果将函数调用分配给新数组,则调用此函数会直接更改原始数组:
myArray = [["A","B","C"],["D","E","F"],["G","H","I"]];
anotherArray = new Array();
anotherArray = myFunction(myArray);
// myArray gets modified!;
我尝试使用 .valueOf() 发送原语:
anotherArray = myFunction(myArray.valueOf());
// myArray gets modified!;
我什至尝试将数组逐个元素和子元素分解,并将所有元素分配给一个新的二维数组,而原始数组仍然会被修改。
我还将子元素加入到一个字符串中,处理它们,将它们拆分回数组,原始数组仍然会被修改。
请问,有人知道我如何将数组值传递给函数而不改变传递的数组吗?