使用拼接删除数组元素后,Google Chrome控制台无法显示正确的数据

时间:2018-03-07 04:15:09

标签: javascript arrays google-chrome console

这样做之后:

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


collection.splice(0,1)
console.log(collection);

我明白了

enter image description here

为什么Chrome控制台在拼接之前只显示两个元素而不是全部三个元素?

2 个答案:

答案 0 :(得分:3)

tl; dr:因为变量只保存对象的引用,并且控制台在显示对象时不会进行深度克隆。

  • collection变量引用Array,因为ArrayObject s。在JavaScript中,变量只将引用保存到对象。
  • 当您改变collection数组时,collection变量引用/指向更改的数组。
  • 当您单击该小箭头图标以在控制台中展开阵列时,它会再次读取记录的变量;现在已经改变了。

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

答案 1 :(得分:-1)

结果是正确的。 splice(x,y)方法从x索引开始删除元素,y指定要删除的元素数量ie;在你的情况下1个元素。 需要记住的是拼接会改变你的原始阵列。