了解JavaScript控制台API

来自菜鸟教程
跳转至:导航、​搜索

JavaScript 控制台是帮助开发和调试我们的应用程序的宝贵工具。 使用控制台对象及其日志记录方法,调用 alert() 来调试和获取变量值的日子已经很长了。 最重要的是,由于 正在进行的标准 ,现代浏览器终于支持相同的方法集。 在这篇文章中,我们将探讨控制台 API 提供的一些主要方法。

日志记录

console.log 是我们用来将值记录到控制台的常用方法:

const name = 'Alligator';
console.log('Hello', name); // Hello Alligator

但我们也可以使用更多的日志记录方法,例如 warninfoerror

console.info('Just FYI');
console.warn('Lookout!');
console.error('Boom 💣');

正如您从生成的控制台输出中看到的那样,使用 warnerror 方法还可以为我们提供堆栈跟踪:

您还可以使用 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.groupconsole.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 之后的所有内容都由以下字符串参数设置样式,并且很快。 以下是上述示例在控制台中的样子: