今天在用console.log 打印一个对象修改前后的值时发现了个问题
let obj = {
a:'abc'
}
console.log(obj) // 快照1
obj.a = {}
console.log(obj) // 快照2
- 当我第一次打开浏览器控制台
- 当我刷新网页再看控制台!以为看到了我想要的结果,但是展开后还是修改后的值
解释
- 估计也是为了性能,第一次进来为了“快”,不会立刻去查出所有要打印的对象的成员来展示,快照1页只显示了些简要信息(比如类型),而是当你点击左侧三角形展开某一个对象时(毕竟很多对象你可能并不会去展开),才会根据引用去查找这个对象的成员,而这个时候看到的就都是这个对象最新的值了。
- 第二次也只是对快照1进行了补充
- 字符串,直接输出
- 数组
{a: Array(0)} - 对象
{a: {…}}
- 字符串,直接输出