在浏览器控制台直接运行如下代码:
let p={name:'lisi',age:20};
console.log(p);
p.age=30;
预期的结果应该是打印的p里面name:'lisi',age:20,也正是如此:

但是点开p对象发现其中age是30

这是为什么呢?查找多篇资料后(https://segmentfault.com/q/1010000044315304),根据我的总结得出如下结论:
打印时直接打印快照,此时控制台对象没展开,其实内容都是对的,只是有可能没有显示。但当你第一次展开对象后,就会访问对象的堆地址上最新的数据内容(注意第二次等之后再点开始终无法起到相同的作用,因为后面有个蓝色的i标志,说明第一次 展开后此内容就始终记下来了)
更复杂的情况:
开源看到蓝色i标志只在最顶层打印的对象有,意味着当你第一次点开此对象后,所有对象中的连带内容都已经保存到快照中,之后再收起和点开都是这一个值
5888

被折叠的 条评论
为什么被折叠?



