JavaScript 控制台是帮助开发和调试我们的应用程序的宝贵工具。 使用控制台对象及其日志记录方法,调用 alert() 来调试和获取变量值的日子已经很长了。 最重要的是,由于 正在进行的标准 ,现代浏览器终于支持相同的方法集。 在这篇文章中,我们将探讨控制台 API 提供的一些主要方法。
日志记录
console.log
是我们用来将值记录到控制台的常用方法:
const name = 'Alligator'; console.log('Hello', name); // Hello Alligator
但我们也可以使用更多的日志记录方法,例如 warn、info 和 error:
console.info('Just FYI'); console.warn('Lookout!'); console.error('Boom 💣');
正如您从生成的控制台输出中看到的那样,使用 warn 或 error 方法还可以为我们提供堆栈跟踪:
您还可以使用 console.trace
触发堆栈跟踪:
function hello(name = 'Alligator') { console.trace('name:', name); return `Hello ${name}!`; } hello();
……哦,还有 console.debug
,但它目前只是 console.log
的别名。
控制台.dir & 控制台.dirxml
console.dir
以一种很好的格式化方式打印出对象:
const fancyThings = { car: '🏎️ Ferrari', watch: '⌚ Cartier', clothing: { shoes: '👠 Christian Louboutin', dress: '👗 Versace' }, boat: '🛥️ Sunseeker' } console.dir(fancyThings);
至于 console.dirxml
,它打印出一个 DOM 元素的标记。 例如:
<!DOCTYPE html> <html lang="en"> <head> <!-- ... --> </head> <body> <h1>hello</h1> <script> console.dirxml(document.body); </script> </body> </html>
这将输出以下内容:
如果您愿意,您甚至可以使用 console.table 以表格格式更整齐地在控制台中显示数据。
断言
console.assert
方法是运行简单断言测试的简单方法。 如果第一个参数评估为 false,则断言失败,如果断言失败,则后续参数将打印到控制台:
// this will pass, nothing will be logged console.assert(2 == '2', '2 not == to "2"'); // this fails, '3 not === to "3"' will be logged console.assert(3 === '3', '3 not === to "3"');
清算
您可以使用 console.clear
清除控制台:
console.clear();
数数
console.count
方法用于计算使用提供的相同标签调用它的次数。 例如,这里有两个计数器,一个用于偶数值,一个用于奇数值:
[1, 2, 3, 4, 5].forEach(nb => { if (nb % 2 === 0) { console.count('even'); } else { console.count('odd'); } }); // odd: 1 // even: 1 // odd: 2 // even: 2 // odd: 3
定时
正如我们在 这篇短文 中所展示的,您可以使用 console.time
启动计时器,然后使用 console.endTime
结束它。 可选地,时间可以有一个标签:
console.time('fetching data'); fetch('https://jsonplaceholder.typicode.com/users') .then(d => d.json()) .then(console.log); console.timeEnd('fetching data'); // fetching data: 0.2939453125ms // (10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
请注意,如果您使用带有 console.time
的标签,则在调用 console.timeEnd
时必须传入相同的标签。
分组
使用 console.group
和 console.groupEnd
将控制台消息与可选标签组合在一起。 还要注意一个组是如何嵌套到另一个组中的:
console.group('🖍️ colors'); console.log('red'); console.log('orange'); console.group('HEX'); console.log('#FF4C89'); console.log('#7186FE'); console.groupEnd(); console.log('blue'); console.groupEnd();
这是生成的控制台输出:
奖励:给它一些风格
控制台日志记录可以使用特殊的 %c 分隔符设置样式:
console.log( 'Hello %cAlligator%c!', 'color: #008f68; font-weight: bold; font-size: 2rem; text-shadow: 0 0 5px rgba(0,0,0,0.2);', 'color: hotpink; font-weight: bold; font-size: 2rem; text-shadow: 0 0 5px rgba(0,0,0,0.2);' );
第一个 %c 之后的所有内容都将由第二个参数提供的字符串设置样式,然后下一个 %c 之后的所有内容都由以下字符串参数设置样式,并且很快。 以下是上述示例在控制台中的样子: