为什么在 2023 年只使用 console.log 是一个大禁忌

news2024/11/17 13:34:17

这里有 5 个必须知道的控制台对象方法和技巧!

在 2023 年,您是否仍在使用它console.log来满足所有 JavaScript 调试需求?

是时候提升您的技能并发现 JavaScript 控制台对象的全部功能了。

console.tableconsole.time,这些高级方法和技巧将帮助您提高调试输出的质量和可读性,并使您更轻松地解决和修复代码中的问题。

那么为什么不在 2023 年加入 JavaScript 忍者调试器的行列,学习这些基本技术呢?你的代码会感谢你。

😞 问题

使用 just 的最大问题之一console.log是它会使您的代码混乱并使其难以阅读。此外,它本身的信息量不是很大。它只是输出你传递给它的任何值,没有任何上下文或附加信息。

考虑到这一点,这里有十个你应该知道的JavaScript 控制台对象方法和技巧(并尝试一下;我知道只使用 console.log 会更快,但它可以让你的调试体验更好,为你的未来自己!)。

1️⃣ 控制台.表

此方法允许您以可读且易于理解的格式输出表格数据。不只是注销一个数组或对象,而是console.table以表格格式显示数据,这样更容易扫描和理解。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>// Output an array of objects as a table
const users = [
  { id: 1, name: 'John Doe' },
  { id: 2, name: 'Jane Doe' }
];
console.table(users);
</code></span></span>

这将以users表格格式输出数组,每个对象的属性作为列,对象作为行。

2️⃣console.group

console.groupconsole.groupEnd。这些方法允许您在控制台中创建一个嵌套的、可折叠的组。这对于组织和构建调试输出非常有用,因此您可以轻松地查看代码的不同级别发生了什么。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>console.group('User Details');
console.log('Name: John Doe');
console.log('Age: 32');
console.groupEnd();
</code></span></span>

这将在控制台中创建一个嵌套的、可折叠的组,标题为“用户详细信息”。组内的日志消息将缩进并组合在一起。

3️⃣控制台时间

console.timeconsole.timeEnd。这些方法允许您测量执行一段代码所花费的时间。这对于识别代码中的性能瓶颈并对其进行优化很有用。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>console.time('Fetching data');
fetch('https://reqres.in/api/users')
  .then(response => response.json())
  .then(data => {
    console.timeEnd('Fetching data');
    // Process the data
  });
</code></span></span>

这将测量从指定 URL 获取数据并解析 JSON 响应所花费的时间。经过的时间将在控制台中输出。

4️⃣console.assert

此方法允许您在代码中编写断言,这些断言应该始终为真。如果断言失败,console.assert将在控制台中输出一条错误消息。这对于捕获错误和确保您的代码按预期工作很有用。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>function add(a, b) {
  return a + b;
}

// Test the add function
const result = add(2, 3);
console.assert(result === 5, 'Expected 2 + 3 = 5');
</code></span></span>

add如果函数在给定输入 2 和 3 时未返回预期结果 5,这将在控制台中输出一条错误消息。

5️⃣风格你的日志

使用该console对象输出样式和颜色。该console对象允许您输出不同颜色和样式的文本,使您的调试输出更具可读性和更容易理解。

%c您可以在语句中使用占位符console.log来指定输出文本的 CSS 样式。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>console.log('%cHello world!', 'color: red; font-weight: bold;');
</code></span></span>

这将输出文本“Hello world!” 以红色和粗体显示,使用指定的 CSS 样式。

顺便说一句,如果你想要更好的日志,你可能想要使用一个专门的日志库,它提供了更多的设置。我在我写的这篇文章中添加了一个非常好的: 5 Small and Hidden React libraries You Should Already Be Using - DEV Community 👩‍💻👨‍💻

6️⃣控制台跟踪

使用该console.trace方法输出堆栈跟踪。这对于理解代码中的执行流程和识别特定日志消息的来源很有用。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>function foo() {
  console.trace();
}

function bar() {
  foo();
}

bar();
</code></span></span>

这将在控制台中输出堆栈跟踪,显示导致调用的函数调用序列console.trace。输出看起来像这样:

7️⃣console.dir

使用该console.dir方法以分层格式输出对象的属性。这对于探索对象的结构以及查看其所有属性和方法很有用。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>const obj = {
  id: 1,
  name: 'John Doe',
  address: {
    street: '123 Main St',
    city: 'New York',
    zip: 10001
  }
};
console.dir(obj);
</code></span></span>

obj这将以分层格式输出对象的属性,允许您查看对象的结构及其所有属性和值。

8️⃣console.count

使用该console.count方法计算特定日志消息的输出次数。这对于跟踪特定代码路径的执行次数以及识别代码中的热点非常有用。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>function foo(x) {
  console.count(x);
}

foo('hello');
foo('world');
foo('hello');
</code></span></span>

这将在控制台中输出字符串“hello”,然后是数字 1。然后它将在控制台中输出字符串“world”,然后是数字 1。最后,它会再次输出字符串“hello”,然后是按数字 2(因为它已被调用两次)。

9️⃣console.clear

使用console.clear方法清除控制台输出。这对于保持您的调试输出井井有条和整洁以及更容易专注于您感兴趣的信息很有用。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>console.log('Hello world!');
console.clear();
console.log('This log message will appear after the console is cleared.');
</code></span></span>

这将输出字符串“Hello world!” 在控制台中,后跟一个空行(因为控制台已清除)。然后它会输出字符串“This log message will appear after the console is cleared.”

1️⃣0️⃣console.profile

使用console.profileconsole.profileEnd方法来衡量代码块的性能。这对于识别性能瓶颈和优化代码以提高速度和效率非常有用。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>console.profile('MyProfile');

// Run some code that you want to measure the performance of
for (let i = 0; i < 100000; i++) {
  // Do something
}

console.profileEnd('MyProfile');
</code></span></span>

console.profile这将开始分析和调用之间的代码块,并在执行调用console.profileEnd时在控制台中输出结果。console.profileEnd输出将包括有关执行代码所花费时间的详细信息以及任何其他与性能相关的信息。

💭 最后的一些想法

在 2023 年,不要仅仅安于现状——JavaScript 控制台对象中console.log有许多更强大、更有价值的工具和技术可用。

console.tableconsole.time,这些方法和技巧将帮助您提高调试输出的质量和可读性,并使您更容易排查和修复代码中的问题。

那么,为什么不在 2023 年提高您的调试技能并尝试这些技术呢?你的代码(和你的理智)会感谢你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82841.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CFD-Post后处理,你真的会做吗?

导读&#xff1a;流体仿真中&#xff0c;解决问题通常分为四个步骤&#xff1a;几何—网格—求解—后处理。今天我们来学习最后一步&#xff1a;后处理。尤其对新手来说&#xff0c;首先要了解一下什么是后处理&#xff1f; 我们通过软件计算收敛后的得到的结果&#xff0c;只…

Python学习笔记-面向对象程序设计

记述python中关于面向对象程序设计的使用。 一、面向对象概述 面向对象&#xff08;Object Oriented&#xff09;&#xff0c;简称OO&#xff1b; 面向对象编程&#xff08;Object Oriented Programming&#xff09;&#xff0c;简称OOP。 1.对象 英文为Object&#xff0c…

IMX6ULL学习笔记(13)——GPIO接口使用【汇编方式】

一、GPIO简介 i.MX6ULL 芯片的 GPIO 被分成 5 组,并且每组 GPIO 的数量不尽相同&#xff0c;例如 GPIO1 拥有 32 个引脚&#xff0c; GPIO2 拥有 22 个引脚&#xff0c; 其他 GPIO 分组的数量以及每个 GPIO 的功能请参考 《i.MX 6UltraLite Applications Processor Reference M…

vTESTstudio入门到精通 - vTESTstudio工程创建_01

入行车载网络测试多年以来,最大的困扰就是网上几乎无法搜到工作中常见的问题答案,特别是vTESTstudio的工程和开发相关的问题,在晚上几乎就是一片未知的大陆,偶尔有几篇同行写的,基本也都是某个问题或者某个demo的创建基础讲解,至今我还未找到有博主将vTESTstudio从入门的…

艾美捷—如何选择合适的SAM甲基转移酶活性分析试剂盒?

SAM&#xff0c;也称为 AdoMet&#xff0c;充当修饰蛋白质和 DNA 所需的甲基的供体。SAM 的异常水平与许多异常有关&#xff0c;包括阿尔茨海默氏症、抑郁症、帕金森氏症、多发性硬化症、肝功能衰竭和癌症。 市面上&#xff0c;SAM甲基转移酶酶活性分析试剂盒非常少&#xff0c…

ccf历年第二题满分python代码及知识点总结(2013-2022)

201312-2ISBN号码 思路&#xff1a; 就是简单的字符串处理&#xff0c;没有什么好说的。 代码&#xff1a; str_input input() s str_input.replace("-", "") sum_value 0 start 1 for i in range(len(s)-1):sum_value int(s[i]) * startstart 1…

AI-多模态-2021:ALIGN【】

https://arxiv.org/abs/2102.05918 【写在前面】 学习良好的视觉和视觉语言表征对于解决计算机视觉问题(图像检索、图像分类、视频理解)是至关重要的&#xff0c;目前&#xff0c;预训练的特征在许多NLP任务中已经展现了非常大的潜力。虽然NLP中的表示学习已经可以用没有人工…

消息队列基础

消息队列的应用场景 异步处理&#xff0c;提升吞吐量 削峰填谷&#xff0c;平滑流量冲击 应用解耦&#xff0c;提升系统可用性 消息通讯&#xff0c;点对点消息通讯 消息模型 点对点模式 生产者生产消息到队列服务器&#xff0c;消费者消费消息&#xff0c;并发送确认收到…

Redis Cluster 扩容实战

Redis Cluster 扩容 接着上一篇Redis Cluster 单机集群部署&#xff0c;今天学习下Redis Cluster 架构在实际应用中如何面对各种复杂的场景&#xff0c;如&#xff1a; 扩容 - 增加节点缩减 - 删除节点宕机 - 主节点服务异常 增加节点 随着集群需求的变化&#xff0c;系统人…

smart-doc 文档生成器实战

文章目录一、部署二、代码演示1.类、方法注解2.执行、生成html 或 markdown文档三、参考文档一、部署 1.基于SprinBoot项目&#xff0c;加入pom.xml加入依赖<build><plugins><!-- 打包跳过测试 --><plugin><groupId>org.springframework.boot&l…

[附源码]计算机毕业设计高校学生宿舍管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

若依微服务版登录流程源码分析2

接上篇&#xff0c;后端接收到“/code”请求并将其转发至ValidateCodeHandler处理 生成验证码 进入ValidateCodeServiceImpl#createCaptcha 这块代码比较简单&#xff0c;就不多赘述 /** * 生成验证码 */ Override public AjaxResult createCaptcha() throws IOException, C…

VM 找不到虚拟磁盘 000001.vmdk 一种排查思路

报错内容“ 找不到文件: E:\win10\Windows 10 x64-000001.vmdk 开启此虚拟机需要用到此文件。如果移动了此文件&#xff0c;请提供它的新位置。 ” 它明明就在哪里&#xff0c;却提示找不到&#xff01;气死 这个时候可以打开“vmware.log” 查看报错内容。 比如我的核心报…

从零开始学Java之Java到底是个啥?

全文大约 【 5000】 字&#xff0c;不说废话&#xff0c;只讲可以让你学到技术、明白原理的纯干货&#xff01;文章带有丰富案例及配图、视频&#xff0c;只为让你更好的理解和运用文中的技术概念&#xff0c;给你带来具有足够启迪的教程...... -----------------------------…

基础数据结构链表

链表是一种常见的基础数据结构&#xff0c;结构体指针在这里得到了充分的利用。链表可以动态的进行存储分配&#xff0c;也就是说&#xff0c;链表是一个功能极为强大的数组&#xff0c;他可以在节点中定义多种数据类型&#xff0c;还可以根据需要随意增添&#xff0c;删除&…

论文速递:带重力约束的点云配准(Gravity-constrained point cloud registration)

标题&#xff1a;Gravity-constrained point cloud registration 作者&#xff1a;Vladim ́ır Kubelka, Maxime Vaidis and Franc ̧ois Pomerleau&#xff0c;加拿大拉瓦尔大学 来源&#xff1a;IROS 2022 摘要 视觉和激光SLAM算法从IMU中获益良多。高频率的IMU数据弥补了…

嵌入式:ARM的流水线技术

三级流水线ARM的组织 ARM的3级流水线介绍 到ARM7为止的ARM处理器使用的简单3级流水线分别为 取指级 &#xff1a;读取指令。译码级 &#xff1a;对指令进行译码。占有“译码逻辑”&#xff0c;不占有“数据路径”。执行级 &#xff1a;指令占有“数据路径”&#xff0c;寄存…

拼搏别样的未来,中国社科院与美国杜兰大学金融管理硕士项目助力你的人生旅程

你憧憬中的未来是什么样子呢&#xff1f;我们的人生路程充满了众多可能性&#xff0c;只要努力就会收获自己的别样人生。我们的人生不是单一的色彩&#xff0c;它是五彩斑斓、精彩纷呈的。在每一个阶段的我们所拥有当时的状态并不能代表永远&#xff0c;随着我们的拼搏与奋斗&a…

2022全年度空调十大热门品牌销量榜单

今年空调的销售得到明显改善&#xff0c;尤其是今年夏天全国多地最高气温同比明显提升&#xff0c;且高温的强度和持续时间还具有一定的极端性。随着气温的骤升&#xff0c;空调市场也迅速升温&#xff0c;各终端销售量出现明显增长。 根据鲸参谋数据统计&#xff0c;今年京东平…

“美亚杯”第五届中国电子数据取证大赛答案解析(个人赛)

A C D 分区5为系统分区 A 1073741824*458.29492085140520.96 E A A E D B 无答案 C 搜索各选项&#xff0c;C项搜不到 B C E 使用火绒剑查看进程调用的动态链接库 C 仿真得 B 内存大小为3G&#xff0c;在系统盘根目录过滤大小在2-8G之间的文件 D Win10时间线信息存放的数…