给定以下代码:
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,
还是每个字符串元素的副本? - javascript 解释器/编译器是否优化行 -[1]
推送
old_Array
中每个字符串元素的引用?
最佳答案
第一个问题的答案:每个元素只是旧数组的每个字符串元素的副本。 如果数组包含对象引用,则将引用复制到新数组中。 (在这种情况下,像字符串和数字这样的原始类型是按值复制的。)
第二个问题的答案:不,javascript 解释器不会通过推送 old_Array 中每个字符串元素的引用来优化第 [1] 行。
一种更快更好的复制数组的方法是:
var new_Array = old_Array.slice();
它克隆旧数组并返回对新数组的引用。
关于javascript - 将数组中字符串元素的引用推送到新的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46191027/