8个console.log的解决方案

大厂技术  高级前端  Node进阶

点击上方 程序员成长指北,关注公众号

回复1,加入高级Node交流群

console.log 很棒,它可能是我们日常开发中最常用的方法之一。但实际上,控制台对象中也有一些很棒的方法,它们可以帮助我们在控制台中打印出更清晰漂亮的消息。

757836c1d56f5b965d2b26b8b96492e0.png

在今天的文章中,我就来分享一些有关控制台的高级技巧,我们现在开发吧。

日志记录级别:调试、信息、警告、错误

不同的事件根据其重要性具有不同的日志记录级别,通常有四个日志级别:调试→信息→警告→错误,他们在控制台对象中有对应的方法:

4e1db5b25257470b07a418c2a1d5fc32.png

用法:

console.debug('Debug message');
console.info('Useful information');
console.warn('This is a warning');
console.error('Something went wrong!');

输出:

884b1666a60e6ff60c797d0067a6f542.png

  • 默认情况下,console.debug 打印的消息不会出现在控制台上。

  • console.info 等于 console.log 。

  • console.warn 将打印黄色警告样式消息。

  • console.error 将打印一条红色错误样式消息。

当我们需要打印特殊消息时,可以使用这些方法代替 console.log ,它将使消息清晰。

此外,如果我们使用不同的日志记录级别,我们可以过滤消息:

0b031635aba98588816d88872006c605.gif

在这种情况下,Verbose等于debug。

以精美的样式输出消息

如果要在打印的消息中添加 CSS 样式,只需在字符串前添加 %c 并将 CSS 样式作为另一个参数传递:

console.log('%c Hi everyone!', 'color: red; font-size: 18px');
console.log('%c hello world', 'color: #1c03fc; font-size: 18px');

9909faa8818e98f2c9c7a21d90475ef2.png

在控制台输出图像

另一个有趣的事情是,我们可以在控制台中输出图像,我们只需要设置 background-img 属性。

例子:

console.log(
        "%c  ",
        `background: url(https://cdn-images-1.medium.com/fit/c/64/64/1*XYGoKrb1w5zdWZLOIEevZg.png) no-repeat;
         font-size:130px;
         line-height: 64px`
      )

结果:

888986a8b4e4d473761c2798e0aa6e8c.png

  • 由于控制台不支持 <img> 标签,我们使用背景图片代替。

  • 另外,控制台不支持宽高,所以我们用空格和字体大小来代替;

console.table()

假设我们要打印一些对象,如果像这样直接使用console.log:

let user1 = { name: 'bytefish', tech: 'JavaScript', age: 99 }
let user2 = { name: 'Jon', tech: 'CSS', age: 55}
let user3 = { name: 'Bob', tech: 'HTML', age: 22 }


console.log(user1, user2, user3)

它有效,但不清楚:

fc445e738537cc599b1ae5e55b078fb1.png

更好的选择是使用 console.table 在表格中打印它们:

fabd954d8931f23e1a4b758412d10070.png

console.trace()

在调试深度嵌套的函数时,我们可能还想输出代码的堆栈跟踪。console.trace() 方法将帮助我们输出堆栈跟踪。

7b0060099295310681a37c9fadcd4d3f.png

如果我们仍然使用 console.log ,我们将无法再观察程序调用堆栈:

28e6cc8b2ca4afdd34c61a20d3c8728c.png

console.time()

当我们需要跟踪一个操作需要多长时间时,我们可以使用 console.time() ,它会启动一个计时器。

我们为每个计时器指定一个唯一的名称,并且在给定页面上最多可以运行 10,000 个计时器。

当我们使用相同的名称调用 console.timeEnd() 时,浏览器将输出自计时器启动以来经过的时间(以毫秒为单位)。

7d0e8688bf7160cf8ab897c40afcd35c.png

console.count()

当我们需要计算一段代码执行了多少次时,我们可以使用 console.count 。console.count() 方法记录了这个对 count() 的特定调用被调用的次数。

例如,如果我们想计算一个斐波那契函数被调用了多少次,那么我们可以编写如下代码:

function fibonacci(num) {
  console.count('fibonacci function has been executed')
  if (num <= 1) return 1;
  return fibonacci(num - 1) + fibonacci(num - 2);
}
fibonacci(10)

73e1145389e737241623f473daec0565.png

当我们需要计算组件在 React 或 Vue 中渲染或更新的次数时,我们也可以使用 console.count,所以你不需要自己实现一个计数器。

console.assert()

使用 console.assert(),我们可以决定只在条件为假时记录一些内容,并通过避免不必要的消息打印来节省一些控制台空间:

console.group()

我们可以使用嵌套组通过视觉关联相关消息来帮助组织您的输出。要创建新的嵌套块,请调用 console.group()。

console.groupCollapsed() 方法类似,但是新块是折叠的,需要点击一个公开按钮才能阅读。

console.log("This is the outer level");
console.group();
    console.log("Level 2");
    console.group();
        console.log("Level 3");
        console.warn("More of level 3");
    console.groupEnd();
console.log("Back to level 2");
console.groupEnd();
console.log("Back to the outer level");

e72e71d717375e1f8635171b37660679.png

写在最后

以上就是我今天想与你分享的8个关于console.log的解决方案,希望这些知识对你有用,如果你觉得对你有帮助的话,请记得我,关注我,并将其分享给你的朋友,也许能够帮助到他,最后,感谢你的阅读,祝编程愉快!

最后

Node 社群


我组建了一个氛围特别好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你对Node.js学习感兴趣的话(后续有计划也可以),我们可以一起进行Node.js相关的交流、学习、共建。下方加 考拉 好友回复「Node」即可。

如果你觉得这篇内容对你有帮助,我想请你帮我2个小忙:

1. 点个「在看」,让更多人也能看到这篇文章2. 订阅官方博客 www.inode.club 让我们一起成长

点赞和在看就是最大的支持❤️
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在您提供的代码中,取消选中后 `checkedList` 中选中的 `deviceId` 仍然存在的原因是,`e.detail.value` 返回的是一个数组,而不是单个值。所以在添加或删除元素时,您需要操作整个数组而不是单个值。 在您的代码中,`checkValue` 是一个数组,它包含了当前选中的 `deviceId`。当取消选中时,`checkValue` 数组会被清空,但是 `checkedList` 数组中的元素并没有被删除。这是因为使用 `indexOf` 方法查找删除元素时,它会尝试找到与 `checkValue` 完全相等的元素,但实际上 `checkValue` 是一个数组,而不是单个值。 为了解决这个问题,您可以使用 `Array.includes()` 方法来判断 `checkedList` 数组中是否包含某个 `deviceId`,然后再进行添加或删除操作。下面是修改后的代码示例: ```javascript checkMac(e) { const checkValue = e.detail.value; const isChecked = checkValue.length > 0; console.log('value', checkValue); console.log('check', isChecked); let checkedList = this.data.checkedList; if (isChecked) { // 添加到数组 for (let value of checkValue) { if (!checkedList.includes(value)) { checkedList.push(value); } } } else { // 从数组中删除 for (let value of checkValue) { const index = checkedList.indexOf(value); if (index > -1) { checkedList.splice(index, 1); } } } for (var i = 0; i < checkedList.length; i++) { console.log('Mac', checkedList[i]); } } ``` 在修改后的代码中,我们使用了 `Array.includes()` 方法来检查 `checkedList` 数组中是否包含某个值,如果不包含才进行添加操作。这样可以避免重复添加相同的 `deviceId`。 希望这个解决方案能够帮助到您!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值