跳转到内容

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 }

原理

  1. console.log 输出的是内存地址上的东西
  2. 引用类型是按照内存地址改值的

对象数组赋值存储引用类型的步骤如下:

  1. 创建一个对象,存储到内存某个地址中
  2. 把这个地址给到 obj 变量存储
  3. obj 赋值给 obj2obj 存储的其实是 1001 这个地址,所以把内存地址赋值给了 obj2
  4. 修改 obj2,等同于修改了 1001 这个地址的对象
  5. obj 存储到也是 1001 这个地址,和 obj2 拿的其实是同一个对象

贡献者

The avatar of contributor named as duyidao duyidao
The avatar of contributor named as v_duyilin v_duyilin
The avatar of contributor named as 刀刀 刀刀

页面历史

刀刀博客累计访客 人;文档累计访问量共