首页 > 解决方案 > 在 JS 中,为什么在 catch(err) 中记录参数不显示完整的响应对象?

问题描述

如果我打印以下内容

 catch (exception) {
      console.log(`Just exception (type: ${typeof(exception)}): `, exception)
      console.log(`Full response (type: ${typeof(exception.response)}): `, exception.response)

我在浏览器的控制台中得到了这个结果:在 此处输入图像描述

我通常在控制台响应中打印以查看它们的结构并发现如何导航它们,但是当我记录 catch 的参数时,响应不会显示其完整结构,尽管它是一个对象,迫使我使用 err.response 来查看实际的对象。

为什么会这样?有没有办法知道响应是否具有打印时未显示的隐藏结构?

标签: javascriptobjecterror-handlingtry-catch

解决方案


有一些特殊类型的对象表达式在记录时不会像正常那样显示 JavaScript 属性和值,而是显示其他内容。一些具有这种行为的事物包括:

  • DOM 元素
  • 功能
  • 错误

在这些情况和其他情况下,某些环境会记录一些自定义内容而不是对象结构。

console.log(document.body);
console.log(() => 'foo');
console.log(new Error('err!'));

在此处输入图像描述

要查看对象结构,请使用console.dir代替console.log


推荐阅读