使console.log在Google Chrome中同步工作

时间:2018-05-08 08:45:16

标签: javascript google-chrome pass-by-reference console.log

在谷歌浏览器中,以下代码段

var array = [{a: 0}];
console.log(array);
array[0].a = 1;

输出[{a: 1}] (在使用Stackoverflow Snippet时没有,但在JsFiddle上查看)

我怀疑这是因为console.log在Chrome中是异步实现的,并且数组是通过引用存储的。我注意到console.table()以这种方式工作正常。

有没有办法让console.log()做同样的事情?

2 个答案:

答案 0 :(得分:0)

控制台日志包含对象的引用,它不会克隆它只是为了将其打印到控制台。那太荒谬了。如果你想记住状态,你需要JSON.stringify对象,或者手动深度克隆它。

修改: 它是同步的。刷新视图时,UI会重绘。我是说,例如如果你点击三角形。

enter image description here

答案 1 :(得分:0)

您想要记录对象的副本,当您无法控制何时单击控制台中的箭头时,此功能尤其有用。

如果对象包含JSON友好类型console.log(JSON.parse(JSON.stringify(a))将起作用。

How to Deep clone in javascript将有助于处理更复杂的对象。