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点击展开对象时,会根据引用去获取内存真实的值然后显示。