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

标签 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 控制台在拼接之前只显示两个元素而不是全部三个?

最佳答案

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


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

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

关于javascript - 使用拼接删除数组元素后,Google Chrome 控制台未显示正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49144015/

相关文章:

google-chrome - 在 Chrome 中通过 Feature-Policy 使用无法识别的功能时删除错误消息

javascript - 为什么我的 setTimeout 函数在延迟时使用 jquery 的 ReplaceWith() 来淡出、替换和淡入文本不起作用?

javascript - 使用react-app-rewired将webpack配置添加到react-create-app

javascript - AJAX:将 <li> 添加到现有的

java - 如何使用 for 循环访问对象数据(其中对象位于数组中)?

php - 在php中的数组中发布数据

javascript - jQuery 事件是否会在销毁它们所绑定(bind)的内容时自动解除绑定(bind)?

java - 如何在 XML 文件中构建多维数组?

internet-explorer - Chrome/Safari 或 IE 上的响应式设计 View

javascript - 支持两种浏览器(Chrome 和 Firefox)的 javascript 本地存储