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

时间:2015-02-27 13:32:36

标签: 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被“延迟”(不会对输入进行字符串化)对象立即)。但是这个bug被标记为已修复,那么为什么几年后这种情况仍然会发生?

2 个答案:

答案 0 :(得分:4)

它没有。

输出console.log的对象时,输出对象"参考&#34 ;;控制台中的值是动态的,它们将更新以反映对象的当前状态。

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

答案 1 :(得分:3)

每当您单击对象数组时,它都会显示更新的对象,而不是您执行console.log时它们的外观快照。

将其视为对相应对象的引用数组。