给出以下代码:
var old_Array =["One","Two","..."];
var len = old_Array .length;
var new_Array =[];
for(var i=0;i<len;++i)
{
new_Array.push(old_Array [i]); // ----- [1]
}
在 [1]行之后,
new_Array
用字符串填充。old_Array,
还是每个字符串元素的副本? 在
old_Array
中推送每个字符串元素的引用? 最佳答案
第一个问题的答案:每个元素只是旧数组每个字符串元素的副本。
如果数组包含对象引用,则将引用复制到新数组中。 (在这种情况下,原始类型(如字符串和数字)将按值复制。)
回答第二个问题:不,JavaScript解释器不会通过推送old_Array中每个字符串元素的引用来优化第[1]行。
一种更快更好的复制数组的方法是:
var new_Array = old_Array.slice();
它将克隆旧阵列,并将引用返回到新阵列。