javascript - 将数组中字符串元素的引用推送到新的字符串数组

标签 javascript arrays performance optimization

给定以下代码:

    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 行之后用字符串填充。

  1. 每个元素实际上是对字符串元素的引用吗 old_Array, 还是每个字符串元素的副本?
  2. javascript 解释器/编译器是否优化行 -[1] 推送 old_Array 中每个字符串元素的引用?

最佳答案

第一个问题的答案:每个元素只是旧数组的每个字符串元素的副本。 如果数组包含对象引用,则将引用复制到新数组中。 (在这种情况下,像字符串和数字这样的原始类型是按值复制的。)

第二个问题的答案:不,javascript 解释器不会通过推送 old_Array 中每个字符串元素的引用来优化第 [1] 行。

一种更快更好的复制数组的方法是:

var new_Array = old_Array.slice();

它克隆旧数组并返回对新数组的引用。

关于javascript - 将数组中字符串元素的引用推送到新的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46191027/

相关文章:

javascript - 递归乘法函数

javascript - 为什么在使用 switch 语句循环对象中的键时会出现流错误?

c - 为什么下面的代码不打印任何内容..?

android - 在 Android 上显示具有良好性能的巨大 map ?

javascript - Javascript RegExp 中的 < 是否作为断言被有意忽略(如 JSLint 所建议的那样)?

javascript - 使用 jQuery 选择前 “n” 日期

java - Java中的泛型数组

php - SQL 插入速度的变化

python - 如何将这段代码从 python 循环重写为 numpy 向量(为了性能)?

javascript - 带有 angular-cli 的 ASP.NET WebApi