问题:
在 JavaScript 代码片段中,定义了一个数组,并且打印到控制台。修改数组元素后,再次打印。 Firefox 的控制台显示两个正确的值,但 Chrome 的控制台会延迟计算对象并打印两个实例的修改值。
代码中是否存在错误,或者这是 Chrome 控制台的行为?
答案:
正如 WebKit 错误报告(现已修复)中所指出的,存在一个问题关于 Chrome 在控制台中对对象的评估。
解释和避免:
此行为源于 Chrome 控制台对对象的惰性评估性质。它仅在它们显示在控制台上时对其进行评估,如果在显示之前修改了对象,则会导致错误的输出。
为了避免此问题,可以在对象上调用 .toString() ,这会创建一个后续代码更改不会改变的表示形式。在打印到控制台之前调用 .toString() 可确保显示正确的值。
修改后的代码:
使用此修改后的方法,控制台输出Chrome 中的结果与 Firefox 中的结果相同,显示数组的两个正确值。
以上是为什么 Chrome 的 JavaScript 控制台显示修改后的对象值而不是原始值?的详细内容。更多信息请关注PHP中文网其他相关文章!