我想在testArray
中存储tempArray
,然后删除testArray
。在下面的代码中tempArray
与testArray
一起被删除。请解释为什么这不符合计算最小化的方法。
var testArray = new Array();
testArray.push("green");
alert(testArray.length);//returns one
var tempArray = new Array();
var tempArray = testArray;
alert(tempArray.length);//returns one
testArray.length = 0;
alert(tempArray.length);//returns zero
答案 0 :(得分:3)
var tempArray = testArray.slice();
创建testArray的副本
答案 1 :(得分:3)
这是一个按值传递与传递引用的问题。当你这样做
var tempArray = testArray;
您正在为testArray创建引用。基本上tempArray只是同一个对象的另一个名称。正如其他答案所指出的那样,你需要的是像slice()这样的方法,它可以复制testArray中的数据。
如果你发现这个令人困惑,你可能想要通过引用进行一些研究,而不是通过值传递 - 它使语言与语言有很大不同。我做了一个快速谷歌'Javascript传递参考vs传递值',并找到了一些文章。例如,this看起来可能是一个不错的起点。
答案 2 :(得分:1)
您的两个变量引用相同的数组,因此使用one改变数组的长度会改变另一个。你需要复制一份。
而不是
var tempArray = new Array();
var tempArray = testArray;
DO
var tempArray = testArray.slice(0);