console.log()打印对象的问题

1,284 阅读1分钟
let obj = {name: 'aa'}
console.log(obj)
obj.name = 'bb'
console.log(obj)

打开chrome浏览器控制台,结果如下:

Object
  name: "bb"
  __proto__: Object
Object
  name: "bb"
  __proto__: Object

原因:在Chrome中,console.log在控制台打开后才起作用,也就是说,当你打开控制台时,console.log才会将之前被传进去的参打印出来。而对象类型储存的是一个引用的地址,当执行完代码再打开控制台后,对象的值已经更新。

当我们打开浏览器控制台再执行代码,或者打开控制台后刷新一下,就会看到以下结果:

{name: "aa"}
{name: "bb"}

但是当我们展开对象的时候,结果又会变成这样:

{name: "aa"}
  name: "bb"
  __proto__: Object
{name: "bb"}
  name: "bb"
  __proto__: Object

这是因为当在Chrome Console点击展开对象时,会根据引用去获取内存真实的值然后显示。