console.log()打印json格式的数据会显示[Object Object]

本文探讨了打印同一变量两次却得到不同结果的现象。首次打印为完整字符串形式,而第二次则呈现原始JSON格式。原因是首次打印时加入了额外文本导致结果类型转换。

如上图,打印两次相同的res出来,结果却是不同的

第一个打印出来的是整个字符串,第二个会打印出原来的JSON格式的数据,原因是因为第一次打印的时候,前面添加了“res:”这个字符串,所以会把后面的res结果转成了字符串格式的字符串了

当使用 `console.log` 打印对象时,可能会遇到不同问题,对应的处理方法如下: ### 解决异步打印问题 `console.log` 打印对象存在异步问题,当展开打印的对象前,对象保持内存中的最新状态,若修改对象状态,打印内容会变为最新内容。为避免此问题,可在打印时对对象进行深拷贝。例如使用 `JSON.parse(JSON.stringify(obj))` 来复制对象: ```javascript let obj = { name: 'leesy', age: 15 }; let copiedObj = JSON.parse(JSON.stringify(obj)); console.log(copiedObj); obj.age = 150; // 此时打印的 copiedObj 不受 obj 后续修改的影响 ``` ### 解决属性缺失问题 在编写代码用 `console.log()` 进行前端调试打印对象时,可能出现属性缺失情况。比如定义一个 `cat` 对象,在函数中打印后又删除其属性。可在操作对象前先进行复制保存,避免原对象修改影响打印结果: ```javascript let cat = { name: 'Tom', age: 3, color: 'white', birthday: '2020-01-01' }; function test(obj) { let copiedObj = { ...obj }; console.log(copiedObj); delete obj.name; } test(cat); ``` ### 解决打印object Object” 问题 在 JavaScript 或 TypeScript 中,若使用连接运算符(+)将对象转换为字符串,会调用对象的 `toString` 方法,返回 `[object Object]`。可直接使用 `console.log` 打印对象来查看详细内容: ```javascript let obj = { name: 'example', value: 10 }; // 错误做法 console.log('对象是:' + obj); // 正确做法 console.log(obj); ``` ### 优雅打印对象或数组 使用 `JSON.stringify()` 的第三个参数可优雅打印数组或对象。第三个参数可用于设置缩进,使打印结果更易读: ```javascript const options = [ { label: "数据库类型名称", prop: "cnName", value: "", type: "input", filterable: true, width: 150 } ]; console.log('before', options); console.log('after', JSON.stringify(options, null, 2)); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夕夜_如风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值