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中文网其他相关文章!