跳到主要内容

console.log 并不简单

问题

我最开始接触前端的时候,学会用的就是 console.log ,甚至现在,大部分情况也还在用它调试,但不同的场景下,其实有更多好用的 API。

1. console.assert

设想你遇到这样的情况:当某个值判断为假(空字符串,undefined 或者 null)的时候,你期望能在 log 中把它打印出来:

一般的写法是这样:

没有任何问题,就是不够优雅,优雅的写法应该是怎样呢:

敲黑板

当我们传入的第一个参数为 时, console.assert 打印跟在这个参数后面的值。

请注意

请注意,如果你使用的 NodeJS 版本 ≤ 10.0console.assert 可能会中断后面代码的执行,但是在 .10 的版本中被修复了(当然,在浏览器中不存在这个问题)

2. 增强 log 的阅读体验

假如有这么一堆看起来并不易读的数据要打印在 console 里面:

const name = "frontend-wingman"
const url = "www.frontendwingman.com"
const chapter = "console"

光看输出的结果,我们很难判断打印的到底是哪个变量,为了让它变得更加易读,你可以打印一个对象:

  • 将所有 console.log 的参数包装在大括号中。
console.log({name, url, chapter})
敲黑板

原理就是 ES6增强的对象字面量 ,所以只要加上 {} 就完事儿了:

3. console.table

console.table 这个小技巧在开发者中可能并没有多少人知道:

console.table 可以将 数组 (或者是 类数组 的对象,或者就是一个 对象 )打印成一个漂亮的表格。

它不仅会根据数组中包含的对象的所有属性,去计算出表中的列名,而且这些列都是可以 缩放 甚至 还可以排序!!!

如果你觉得展示的列太多了,使用第二个参数,传入你想要展示的列的名字:

敲黑板

对于后台而言,只有 node 版本大于 10 以上, console.table 才能起作用