javascript - 为什么 console.log 甚至在修改之前就输出修改后的值?

标签 javascript google-chrome google-chrome-devtools

<分区>

在 Chrome 39 开发者工具中,这段代码:

var something = [
    {x: 'foo'},
    {x: 'foo'}
];

console.log(something);

something.forEach(function (element) {
    element['x'] = 'baz';
});

...输出:

enter image description here

为什么 console.log 甚至在修改之前就输出修改后的值?

类似 question from 2012 解释说由于 chromium bug console.log 是“延迟的”(不会立即对输入对象进行字符串化)。但是这个错误被标记为已修复,那么为什么几年后仍然会出现这种情况?

最佳答案

不是。

当您使用console.log 输出一个对象时,该对象是“通过引用”输出的;控制台中的值是动态的,它们会更新以反射(reflect)对象的当前状态。

如果你想输出关于对象的静态文本字符串,使用console.dir

关于javascript - 为什么 console.log 甚至在修改之前就输出修改后的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28766338/

相关文章:

javascript - "for..of"javascript返回所有值但返回未定义的额外索引

javascript - Chrome 扩展内容安全策略指令错误

html - Chrome下无法查看缓存文件

debugging - 可以访问chrome.devtools API调试Chrome扩展程序

javascript - 如何使用 Chrome 开发工具找出引用分离的 DOM 树的内容

javascript - Ext js 3.4 获取节点

javascript - 某些 IDE 的异步和等待错误

javascript - 在重复之外访问 ng-repeat ng-form

javascript - HTML5 视频 - Chrome - 错误设置 currentTime

CSS: mix-blend-mode = color-dodge 在 Chrome 中不起作用,但在 Firefox 中正常