console.log 对象时需要注意的坑
刀刀
0字
0分钟
2026/8/16
坑点
在打印对象或数组时,控制台看到的是它的最终状态,而不是打印时的状态。
解决方案是在打印时,最好 JSON.stringify() 打印,或者打印里面具体的值。
例子
js
const obj = {}
setTimeout(() => {
console.log('执行setTimeout')
obj.a = 1
obj.b = 2
})
console.log(obj) // { a: 1, b: 2 }原理
console.log输出的是内存地址上的东西- 引用类型是按照内存地址改值的
对象数组赋值存储引用类型的步骤如下:
- 创建一个对象,存储到内存某个地址中
- 把这个地址给到
obj变量存储 obj赋值给obj2,obj存储的其实是 1001 这个地址,所以把内存地址赋值给了obj2- 修改
obj2,等同于修改了 1001 这个地址的对象 obj存储到也是 1001 这个地址,和obj2拿的其实是同一个对象