在Chrome 39开发人员工具中,此代码:
var something = [
{x: 'foo'},
{x: 'foo'}
];
console.log(something);
something.forEach(function (element) {
element['x'] = 'baz';
});
......输出:
为什么console.log
在修改之前输出修改后的值?
类似的 question from 2012 解释说,由于 chromium bug ,console.log
被“延迟”(不会对输入进行字符串化)对象立即)。但是这个bug被标记为已修复,那么为什么几年后这种情况仍然会发生?
答案 0 :(得分:4)
它没有。
输出console.log
的对象时,输出对象"参考&#34 ;;控制台中的值是动态的,它们将更新以反映对象的当前状态。
如果要输出关于对象的静态文本字符串,请使用console.dir
答案 1 :(得分:3)
每当您单击对象数组时,它都会显示更新的对象,而不是您执行console.log时它们的外观快照。
将其视为对相应对象的引用数组。