console.log输出数组的话,值都是当前值而不是运行时的值?

clipboard.png

运行到console.log那行代码的时候数组长度是1, 但是当我打开控制台,点击“向下箭头”展开的时候, 内容变成了最终的值(数组长度为2), 这是为什么, 印象里之前不是啊(也不太确定), 最近更新了谷歌65。

请问如何设置让默认显示的是运行时的值。

阅读 9.9k
3 个回答

应该一直都是,几年前就这样了。

  1. console.log后打断点。
  2. 能转JSON的可以JSON.parse(JSON.stringify(obj))再输出。

搬个砖
console.log是同步还是异步?眼见不一定为实 - CNode技术社区

其实在 console.log 执行的时候,chrome 会对 log 的对象求一次值,打印出来是 Object ,可以继续展开的。但当你展开控制台中的 Object 的时候,chrome 又会对它求一次值,这一次是显示它的属性。所以才会有前后打印的东西不一样的情况发生,因为对象引用的实体的值改变了。
如果把 console.log(a) 改为 console.log(JSON.stringify(a)), 这时就会输出
{"b":{"c":1}}
是刚开始期望的结果。

1.console.log(对象) 打印出来的是它的引用,所以当你点开的时候是它当前的值
2.数组是一个对象

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题