代码之家  ›  专栏  ›  技术社区  ›  Robert

删除带拼接的数组元素后,Google Chrome控制台未显示正确的数据

  •  2
  • Robert  · 技术社区  · 6 年前

    执行此操作后:

    var collection = ['foo', 'bar', 'john'];
    console.log(collection);
    
    
    collection.splice(0,1)
    console.log(collection);
    

    我明白了

    enter image description here

    为什么Chrome控制台只显示两个元素,而不是拼接前的所有三个元素?

    2 回复  |  直到 6 年前
        1
  •  5
  •   nicholaswmin    6 年前

    tl;dr(灾难恢复): 因为变量只包含对对象的引用,而控制台在显示对象时不进行深度克隆。


    • 这个 collection 变量 参考 到您的 Array 自从 大堆 s是 Object s、 在JavaScript中,变量只起作用 参考文献 到对象。
    • 当你改变你的 收集 数组 收集 变量引用/指向更改的数组。
    • 当您单击该小箭头图标在控制台中展开阵列时,它会再次读取记录的变量;现在已经改变了。

    控制台不会在显示对象之前对其进行深度克隆。

        2
  •  0
  •   Rizwan Pasha    6 年前

    结果是正确的。 拼接(x,y)方法删除从x索引开始的元素,y指定要删除的元素数ie;您的案例中有1个元素。 要记住的是,拼接会更改原始阵列。