首页 >web前端 >js教程 >为什么 Chrome 的 JavaScript 控制台仅显示修改后的数组的最终值?

为什么 Chrome 的 JavaScript 控制台仅显示修改后的数组的最终值?

Patricia Arquette
Patricia Arquette原创
2024-12-22 09:48:43794浏览

Why Does Chrome's JavaScript Console Show Only the Final Value of a Modified Array?

Chrome 的 JavaScript 控制台出现意外的对象评估

在 Firefox 和 Chrome JavaScript 控制台之间的比较中,出现了一种奇怪的行为。 Firefox 准确地打印数组的初始值和后续修改,而 Chrome 仅显示两个实例的修改值。

问题:

以下代码说明了该问题:

var s = ["hi"];
console.log(s);
s[0] = "bye";
console.log(s);

Firefox 的控制台产生了预期的结果输出:

["hi"]
["bye"]

但是,Chrome 的控制台呈现:

["bye"]
["bye"]

答案:

此行为是由于已知且现已修复的Webkit 中的错误:https://bugs.webkit.org/show_bug.cgi?id=35801。它涉及控制台对对象的延迟评估。

延迟评估意味着控制台在准备好显示输出之前不会评估对象。即使在控制台激活之前修改了对象,也会发生这种情况。

解决方案:

要避免此问题,可以在记录之前将对象转换为字符串表示形式it:

var s = ["hi"];
console.log(s.toString());
s[0] = "bye";
console.log(s.toString());

这会强制立即评估对象,控制台输出:

hi
bye

以上是为什么 Chrome 的 JavaScript 控制台仅显示修改后的数组的最终值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn