【问题标题】:Google Chrome Console not displaying correct data after removing array element with splice使用拼接删除数组元素后,Google Chrome 控制台未显示正确的数据
【发布时间】:2018-03-07 04:15:09
【问题描述】:

这样做之后:

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


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

我明白了

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

【问题讨论】:

    标签: javascript arrays google-chrome console


    【解决方案1】:

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


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

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

    【讨论】:

    • 但是在console.log之后发生了变化。我很难理解之后的事情会如何影响之前的事情。
    • @RobertRocha 没关系;当您单击该箭头图标以展开数组时,您可以想象它再次执行console.log(collection) 以显示内容。现在有意义吗?
    • 您看到阵列旁边的蓝色“i”了吗?它说“刚刚计算了值”。每次打开该数组查看值时,开发控制台都会再次检查该值,为您提供最新的值。
    • 谢谢@Sidney!您的评论让我更好地理解了这一点。
    • 我在哪里可以阅读更多关于“我”的含义的信息,我尝试使用谷歌搜索,但得到了大量结果。
    【解决方案2】:

    结果是正确的。 splice(x,y) 方法从 x 索引开始删除元素, y 指定要删除的元素数量,即;在你的情况下 1 个元素。 要记住的是 splice 会更改您的原始数组。

    【讨论】:

      猜你喜欢
      • 2022-10-05
      • 2017-11-18
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      • 2021-01-17
      • 2017-04-29
      相关资源
      最近更新 更多