执行此操作后:
var collection = ['foo', 'bar', 'john'];
console.log(collection);
collection.splice(0,1)
console.log(collection);
我明白了
为什么 Chrome 控制台在拼接之前只显示两个元素而不是全部三个?
最佳答案
tl;dr: 因为变量仅保存对对象的引用,并且控制台在显示对象时不会深度克隆。
collection
变量引用您的Array
,因为Array
是Object
>s。在 JavaScript 中,变量仅保存对对象的引用。- 当您改变
collection
数组时,collection
变量引用/指向更改后的数组。 - 当您单击小箭头图标在控制台中展开数组时,它会再次读取记录的变量;现在已经改变了。
控制台在显示对象之前不会深度克隆该对象。
关于javascript - 使用拼接删除数组元素后,Google Chrome 控制台未显示正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49144015/