如何使用JavaScript控制台:超越console.log()

哈Ha!我向您介绍了Yash Agrawal 撰写的文章“如何使用JavaScript控制台:超越console.log()”的翻译。

调试JavaScript中最简单的方法之一是使用console.log输出材料。但是控制台提供了许多其他方法,可以帮助改善调试。

开始吧。

最基本的用例是输出一个字符串或一组JavaScript对象。很简单

console.log('Is this working?'); 

现在想象一下一个场景,当您有一堆需要输出到控制台的对象时。

const foo = { id: 1, verified: true, color: 'green};
const bar = { id: 2, verified: false, color: 'red' };

最直观的输出方式就是多次console.log(变量)。当我们看到控制台中的显示方式时,问题变得更加明显。

图片

如您所见,变量名称不可见,这不是很方便。可以通过将所有变量合并到一个console.log({foo,bar})中来解决。它还减少了我们代码中的console.log行的数量。

console.table()


我们可以将所有这些放在表中以使其更具可读性,从而迈出下一步。每当您具有具有公共属性的对象或对象数组时,请使用console.table()。在这里,我们可以使用console.table({foo,bar}),控制台显示:

图片

console.group()


当您希望将相应元素分组或嵌套在一起以便能够轻松读取日志时,可以使用它。

当一个函数中有多个log语句,并且希望能够清楚地看到与每个语句相对应的作用域时,也可以使用它。

例如,如果您注册用户数据:


console.group('User Details');
    console.log('name: John Doe');
    console.log('job: Software Developer');

    console.group('Address');
        console.log('Street: 123 Townsend Street');
        console.log('City: San Francisco');
        console.log('State: CA');
    console.groupEnd();
console.groupEnd();

图片

如果要默认折叠组,也可以使用console.groupCollapsed()而不是console.group()。您将需要单击左侧的手柄按钮以展开。

console.warn()和console.error()


根据情况,为使控制台更具可读性,可以使用console.warn()或console.error()添加日志。还有console.info(),在某些浏览器中显示“ i”图标。

图片

您可以通过添加自己的样式来走得更远。您可以使用%c指令将样式添加到任何log语句。这可以用来区分API调用,用户事件等。

console.log('%c Auth ‘, 'color: white; background-color: #2274A5’, 'Login page rendered');
console.log('%c GraphQL ','color: white; background-color: #95B46A', 'Get user details');
console.log('%c Error ',  'color: white; background-color: #D33F49',  'Error getting user details’);

您还可以更改字体大小,字体样式和其他CSS元素。

图片

console.trace()


console.trace()将堆栈跟踪信息打印到控制台,并显示代码在特定点如何退出。在某些方法中,您只想调用一次,例如,从数据库中删除。console.trace()可用于确保代码的行为符合我们希望的方式。

console.time()


关于前端开发的另一重要事项是代码应快速。console.time()允许您同步代码中的某些操作以进行测试。

let i = 0;
console.time("While loop");
while (i < 1000000) { i++;}console.timeEnd("While loop");
console.time("For loop");
for (i = 0; i < 1000000; i++) { // For Loop}console.timeEnd("For loop");

图片

希望本文提供了有关使用控制台的不同方法的一些信息。

All Articles