console.trace

JavaScript

console.trace API 支持可选参数,输出的效果和 console.log / console.info 类似。但是除了输出参数指定的内容之外,还会连带将当前的调用堆栈一起输出。可以看 MDN 中给出的一个例子:

function foo() {
  function bar() {
    console.trace();
  }
  bar();
}

foo();

输出的结果类似:

bar
foo
<anonymous>

其中,<anonymous> 是因为 foo 函数是在 console 中直接运行的。当然,这个只能在调试阶段进行代码的检查。如果需要在线上环境,对可能出问题的地方收集调用堆栈信息,直接使用 console.trace 就不满足需求了。可以转而使用 Error 中的 stack 字段:

function foo() {
  function bar() {
    const error = new Error();
    console.log(error.stack);
  }
  bar();
}

foo();

输出结果类似:

Error
    at bar (<anonymous>:3:19)
    at foo (<anonymous>:6:3)
    at <anonymous>:9:1