console.assert

JavaScript

console.assert API 可以用于判断某个条件是否满足,并在不满足的时候,在 Console 里打印出相关的数据。整体 API 和 console.error 比较类似,但是第一个参数是一个判断条件。整个调用,只会在第一个参数是 falsy 值的时候,才会将后面的数据打印出来。打印的方式和 console.error 类似,输出的是 error 信息。需要注意的一点是,根据 MDN 的描述,在 Node.js 10 版本前,除了输出之外,还会抛出一个 AssertionError。这个行为是错误的,console API 不应该影响主流程的代码,Node.js 在 10 修复了问题。

下面是一段示例代码:

function foo() {
  console.log('before');
  console.assert(false, 'incorrect with error message');
  console.log('after');
}

foo();

输出的结果是:

before
incorrect with error message
after

其中,incorrect with error message 这一条,还会额外输出调用的堆栈信息,方便调试。

总结来说,在代码中实现类似 Chrome 中 conditional breakpoint,使用 console.assert 是一个不错的选择:只在出现问题的时候打印必要的信息,可以尽可能的减少对 Console 输出的污染。