如何在控制台格式化日志消息,使其中对象独立展示?
为什么模板字符串里直接拼接对象会显示[object Object]?
你观察得特别仔细!这其实是JavaScript里对象转字符串的默认行为在搞鬼,咱们一步步拆解清楚:
两种console.log的本质区别
- 当直接执行
console.log(obj)时,浏览器或Node.js的控制台会对对象做特殊处理——它会用类JSON的格式化语法展示对象结构,这是控制台专为开发者提供的便利功能,方便咱们直观查看内容。 - 但如果用模板字符串
${obj}拼接对象,JavaScript会自动调用对象的toString()方法来完成转字符串操作。而普通JS对象的默认toString()方法只会返回"[object Object]",所以你就看到了这个“没营养”的结果。
完美解决方案:用JSON.stringify()
正如你已经尝试的,JSON.stringify(obj)会把对象序列化成标准的JSON字符串,这样在模板字符串里拼接时,就能完整展示对象的结构了。
如果想要输出的JSON更易读,还可以加上缩进参数优化格式:
const obj = [{ test1: 'data', test2: 'data', test3: 'data' }]; console.log(`JSON Data ${JSON.stringify(obj, null, 2)}`);
此时控制台会输出带缩进的格式化内容:
JSON Data [ { "test1": "data", "test2": "data", "test3": "data" } ]
内容的提问来源于stack exchange,提问作者user8826104
相关产品推荐
相关产品推荐

