2017-02-09 48 views
1

我在Firefox开发工具中遇到了一些不寻常的行为。使用lodash从对象中过滤某些元素后,控制台显示对该对象的前一个未过滤版本的引用,但仅在右侧窗格中显示。Firefox开发工具+ Chrome调试器控制台javascript对象引用的越野车显示

debug bug

在左侧,它显示了2个元素,这是结果我的预期。右侧显示原始未过滤的17个元素。实际上,在我最近停止使用FB之前,我被迫切换到开发工具之前,我实际上已经遇到过这种情况。

如果没有人遇到过这种情况,我可以尝试将它提取为一个最小案例,但如果它是已知的错误,我更愿意解决它。

倾向于相信我的对象实际上是按左图所示过滤的,但这有点让人不安。

更新:

使用Firefox 51的Linux

浏览器其实就是做同样的事情。它显示了与array[2] 17种元素:

chrome debugger

+0

你确定你在两个地方都记录过滤版本吗? 'filter'不会改变你的数组,所以未过滤的数组仍然存在。 – SimpleJ

+1

没有一个工作的例子很难帮助。控制台中的对象具有继承性,不是快照。试试JSON.stringify版本并比较 – charlietfl

回答

0

当检查的阵列被显示其当前,即在时间的值点击登录变量。该值可能与记录到控制台的值不同。

Chrome DevTools显示一个小小的Info icon shown besides an expanded array variable图标,除了在悬停时解释这个问题。

Chrome DevTools showing expanded array variable and tooltip explaining why the item count differs

这意味着,在变量确实记录它在它只有两个项目的时间,但在你点击它的时候,它再次明显过滤。

+0

谢谢。他们应该将console.log()更改为console.confuse()最后我检查了一下,日志的目的是记录事件发生的顺序......耸耸肩: -/ – glyph

+0

这显然是他们在性能方面做出的妥协,因为如果他们将所有记录的对象保存在内存中,内存消耗就会非常快。正如@charlietfl提到的,使用'JSON.stringify()'是一个简单的解决方法。 –