在 Google Chrome 中调试代码时,观察到 console.log() 在处理嵌套数组时表现得很奇怪。记录数组时,在记录后修改其内部值会导致记录的输出反映更新后的值而不是记录时的值。 Firefox 中不存在这种行为。
进一步调查显示,在加载期间打开 Chrome 控制台时会出现不一致的情况。控制台最初关闭并在页面加载后打开,console.log() 显示记录时数组的实际值。
经过深入研究,它发现这种行为被认为是 Webkit 中的一个错误。然而,修复程序已于 2012 年 8 月实施,但尚未在 Google Chrome 中发布。
一位 Chromium 开发人员对该错误发表了评论,表示在控制台上克隆对象可能会不可行。此外,监听对象属性更改以保持准确的值是不切实际的。
console.log() 的当前实现避免在控制台中显示对象时克隆对象。相反,在记录时会生成简短的预览,提供对象属性的快照。仅当控制台已打开时才会发生这种情况,这解释了根据控制台的初始状态而导致的行为差异。
Google Chrome 的 console.log() 中的这种不一致行为是由于控制台内对象处理的实现。应保留预期行为,因为预览反映了记录时对象的值。开发人员应该意识到这种行为,并在可能的情况下使用替代调试方法。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3