console调试

简介

浏览器的开发者工具为我们提供了强大的调试系统,可以用来查看DOM树结构、CSS样式调试、动画调试、JavaScript代码断点调试等。今天我们就来看看console调试的那些实用的调试技巧。

我们使用最多的就是console.log()了,当然多数情况下,console.log() 就能满足我们的需求,但是当数据变得比较复杂时,console.log() 就显得有些单一。

在这里插入图片描述

基础打印

console.log()

let age = 18;
console.log("message:", age) 

占位符

  • 字符串:%s
  • 整数:%d
  • 浮点数:%f
  • 对象:%o%O
  • CSS样式:%c
        let name = "HYC";let age = 18;let height = 180;console.log('Name: %s, Age: %d', name, age)     // Name: HYC, Age: 18console.log('Age: %d, Height: %d', age, height) // Age: 18, Height: 180console.log('My Name is %cHYC ฅ՞•ﻌ•՞ฅ', 'color: skyblue; font-size: 30px;background: #000') 

在这里插入图片描述

这里将后面的变量赋值给了前面的占位符的位置,他们是一一对应的。
这种写法在复杂的输出时,能保证模板和数据分离,结构更加清晰。不过如果是简单的输出,就没必要这样写了

console.warn()

在控制台输出警告信息。它的用法和console.log是完全一样的,只是显示的样式不太一样,信息最前面加一个黄色三角。
在这里插入图片描述

console.error()

在控制台输出错误信息
在这里插入图片描述
能打印调用栈

  function a() {b();}function b() {console.error("error");}function c() {a();}c();

在这里插入图片描述
打印出来了函数函数调用栈的信息:b→a→c

console.info()

打印资讯类说明信息,它和console.log()的用法一致,打印出来的效果也是一样的

打印时间

console.time() & console.timeEnd()

获取一段代码的执行时间

console.time();setTimeout(() => {console.timeEnd();
}, 1000);  //default: 1005.7451171875 ms

传递一个参数,该参数是一个字符串,用来标记唯一的计时器。如果有多个计时器,就需要使用这个标签来标记每一个计时器:

console.time("timer1");
console.time("timer2");setTimeout(() => {console.timeEnd("timer1");
}, 1000);setTimeout(() => {console.timeEnd("timer2");
}, 2000);

console.time() & console.timeLog()

需要使用console.time()来启动一个计时器,然后console.timeLog()就是打印计时器当前的时间,而console.timeEnd()是打印计时器,直到结束的时间
timeEnd 会终止当前的计时

console.time("timer");setTimeout(() => {console.timeLog("timer")setTimeout(() => {console.timeLog("timer");}, 2000);
}, 1000);// timer: 1002.80224609375 ms
// timer: 3008.044189453125 ms
console.time("timer");
setTimeout(() => {console.timeEnd("timer")setTimeout(() => {console.timeLog("timer"); // Timer 'timer' does not exist}, 2000);
}, 1000);

分组打印

console.group() & console.groupEnd()

这两个方法用于在控制台创建一个信息分组。一个完整的信息分组以 console.group() 开始,console.groupEnd() 结束。

console.group();
console.log('First Group');
console.group();
console.log('Second Group')
console.groupEnd();
console.groupEnd();

在这里插入图片描述

console.groupCollapsed()

也需要使用console.groupEnd()来结束分组,区别是默认打印的信息是折叠展示的,而group()是默认展开的

        console.groupCollapsed();console.log('First Group');console.groupCollapsed('name2');console.log('Second Group')console.groupEnd();console.groupEnd();

在这里插入图片描述

打印计次

console.count()

获取当前执行的次数,也可以传一个参数来进行标记(如果为空,则为默认标签default)
可以使用这个方法来确定是否少调用或者重复调用了该方法。

  for (i = 0; i < 5; i++) {console.count();console.count('hello');}

在这里插入图片描述

console.countReset()

重置计算器,需要配合上面的console.count()方法使用。它有一个可选的参数label:

  • 如果提供了参数label,此函数会重置与label关联的计数,将count重置为0。
  • 如果省略了参数label,此函数会重置默认的计数器,将count重置为0。
  console.count();console.count("a");console.count("b");console.count("a");console.count("a");console.count();console.count();console.countReset();console.countReset("a");console.countReset("b");console.count();console.count("a");console.count("b");

其他打印

console.table()

console.table() 方法有两个参数,第一个参数是要打印的对象,第二个参数是需要打印的表格的标题,这里就是数组对象的属性值

const users = [ { "first_name":"Harcourt","last_name":"Huckerbe","gender":"Male","city":"Linchen","birth_country":"China"},{ "first_name":"Allyn","last_name":"McEttigen","gender":"Male","city":"Ambelókipoi","birth_country":"Greece"},{ "first_name":"Sandor","last_name":"Degg","gender":"Male","city":"Mthatha","birth_country":"South Africa"}
]console.table(users, ['first_name', 'last_name', 'city']);

在这里插入图片描述

打印数组:

const app = ["facebook", "google", "twitter"];
console.table(app);

在这里插入图片描述

console.clear()

清除控制台的信息

console.assert()

用于语句断言,当断言为 false时,则在信息到控制台输出错误信息。它的语法如下:

console.assert(expression, message)
  • expression: 条件语句,语句会被解析成 Boolean,且为 false 的时候会触发message语句输出;
  • message: 输出语句,可以是任意类型。
        let num = 120console.assert(num < 100, "Node num is > 100");

在这里插入图片描述

console.trace()

console.trace()方法可以用于打印当前执行的代码在堆栈中的调用路径

function a() {b();
}
function b() {console.trace();
}
function c() {a();
}
c();

在这里插入图片描述
这里输出了调用栈的信息:b→a→c,这个堆栈信息是从调用位置开始的

console.dir()

可以在控制台中显示指定JavaScript对象的属性,并通过类似文件树样式的交互列表显示
在多数情况下,使用consoledir()和使用console.log()的效果是一样的。但是当打印元素结构时,就会有很大的差异了,console.log()打印的是元素的DOM结构,而console.dir()打印的是元素的属性
在这里插入图片描述

console.dirxml()

用于显示一个明确的XML/HTML元素的包括所有后代元素的交互树。如果无法作为一个element被显示,那么会以JavaScript对象的形式作为替代。它的输出是一个继承的扩展的节点列表,可以让你看到子节点的内容。其语法如下:
该方法会打印输出XML元素及其后代元素,对于XML和HTML元素调用console.log()和console.dirxml()是等价的。

console.dirxml(object);

console.memory

是 console 对象的一个属性,而不是一个方法。它可以用来查看当前内存的使用情况,如果使用过多的console.log()会占用较多的内存,导致浏览器出现卡顿情况。

  • jsHeapSizeLimit: 堆内存大小的限制。
  • totalJSHeapSize: 当前已分配的堆内存大小。
  • usedJSHeapSize: 当前已使用的堆内存大小。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四十二、大数据技术之Kafka3.x(5)

&#x1f33b;&#x1f33b; 目录 一、Kafka-Eagle 监控1.1 MySQL 环境准备1.2 Kafka 环境准备1.3 Kafka-Eagle 安装1.4 Kafka-Eagle 页面操作 二、集成 SpringBoot2.1 前期准备2.2 SpringBoot 生产者2.3 SpringBoot 消费者 三、集成 Spark&#xff08;拓展 Scala 语言&#xf…

IDEA快捷键(Ctrl + tab)非常好用 切换最近使用的编辑器选项卡

文章目录 1、为什么要使用 ctrl tab 快捷键&#xff1f;2、使用 ctrl tab 快捷键 1、为什么要使用 ctrl tab 快捷键&#xff1f; 当我们点击 ctrl alt 鼠标左键点击 进入方法的实现时&#xff0c;这个时候我们会在这个实现类中不断的点击&#xff0c;查看源码&#xff0c…

【学习笔记】Matlab和python双语言的学习(最小生成树——Kruskal算法、Prim算法)

文章目录 前言一、最小生成树树的一些概念关键特性最小生成树和最短路径的主要区别常用算法1. Kruskal算法(适合点多边少的图)2. Prim算法(适合边多点少的图) 二、示例三、代码实现----Matlab四、代码实现----python1. Kruskal算法2. Prim算法 总结 前言 通过模型算法&#xf…

【QuikGraph】TSP旅行商问题变体之不返回起点

1、问题分析 目的&#xff1a;在旅行商问题的基础上&#xff0c;无需返回起点。相当于找到一条最短路径&#xff0c;能够遍历所有的顶点。起点和终点都是动态计算出来的&#xff0c;不是提前固定的。 这个问题也称为为计算“最短的哈密尔顿路径”。 2、解决方案 出处&#…

【无标题】mysql读写分离架构+MyCAT实现读写分离

1、读写分离的目的 数据库负载均衡&#xff1a; 当数据库请求增多时&#xff0c;单例数据库不能够满足业务 需求。需要进行数据库实例的扩容。多台数据库同时相 应请求。也就是说需要对数据库的请求&#xff0c;进行负载均衡 但是由于数据库服务特殊原因&#xff0c;数据库…

【算法速刷(7/100)】LeetCode —— 200.岛屿数量

这题是典型的深搜题&#xff0c;只需要额外记录每个格子是否被搜索过&#xff0c;然后挨个进行陆地的深度搜索即可。&#xff08;如果要使用lambda进行递归&#xff0c;需要显式指出变量的模板类型&#xff0c;不能使用auto推导&#xff09; int numIslands(vector<vector&…

MATLAB基于深度学习的车辆检测系统

如今机器视觉领域深度学习算法已经大行其道&#xff0c;也让人工智能的实现不再那么遥不可及&#xff0c;但是在目标检测领域&#xff0c;让计算机超越人类还需让更多的人参与进来继续努力。如今众多的高校&#xff0c;甚至中小学已经将人工智能纳入了学习科目&#xff0c;这确…

【YOLOv5/v7改进系列】替换Neck为Gold-Yolo特征融合网络

一、导言 Gold-YOLO是一种高效的物体检测模型&#xff0c;它通过一种新的机制——Gather-and-Distribute&#xff08;GD&#xff09;机制来增强多尺度特征融合的能力&#xff0c;从而在保证实时性能的同时提高了检测精度。下面是对Gold-YOLO的主要特点和创新点的概述&#xff…

【C++ 面试 - 基础题】每日 3 题(十八)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

Web开发-CSS篇-上

CSS的发展历史 CSS&#xff08;层叠样式表&#xff09;最初由万维网联盟&#xff08;W3C&#xff09;于1996年发布。CSS1是最早的版本&#xff0c;它为网页设计提供了基本的样式功能&#xff0c;如字体、颜色和间距。随着互联网的发展&#xff0c;CSS也不断演进&#xff1a; C…

【低代码开发】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

谷粒商城实战笔记-175~177-商城业务-检索服务-检索查询接口开发

文章目录 一&#xff0c;175-商城业务-检索服务-检索查询参数模型分析抽取二&#xff0c;176-商城业务-检索服务-检索返回结果模型分析抽取三&#xff0c;177-商城业务-检索服务-检索DSL测试-查询部分四&#xff0c;178-商城业务-检索服务-检索DSL测试-聚合部分问题记录解决方案…

RCE之无参数读取文件总结

RCE漏洞(Remote Code|Command Execute)&#xff1a; 是指由于程序中预留了执行代码或者命令的接口&#xff0c;并且提供了给用户使用的界面&#xff0c;导致被黑客利用&#xff0c; 控制服务器。 代码执行漏洞原理&#xff1a; 传入php代码到执行函数的变量&#xff0c;客户端…

IIC 通信协议详解

目录 一、概述二、I2C 详解1、I2C 总线简介2、I2C 协议相关知识2.1 起始位2.2 停止位2.3 数据传输2.4 应答信号2.5 I2C 设备地址格式2.5 I2C 时序图2.5.1 I2C 写时序2.5.2 I2C 读时序2.5.3 单个/多个字节的写入/读取 3、时钟同步和仲裁3.1 时钟同步3.2 时钟仲裁 一、概述 IIC …

Fal.ai Flux 1-Pro/Viva.ai/哩布哩布AI:AI绘图部分免费工具+原图提示词Prompt

目录 #1 找软件 #2 懂提示词 #3 更难的一步&#xff0c;会英文 我个人认为&#xff0c;想要玩文生图&#xff0c;你要会3个步骤&#xff1a; #1 找软件 主流文生图软件&#xff1a;Midjourney、Stable Diffusion、Dall-E 3 巧了&#xff0c;我用的都是小众、免费的画笔工…

【Linux】守护进程:containerd的使用教程

这里写目录标题 前言一. ctr1.1 ctr CLI1.2 ctr 调试 二、 创建 container2.1 进入 NewContainer2.2 ContainerService().Create 前言 介绍了 kubelet 通过 cri 接口和 containerd 交互的过程&#xff0c;containerd 源码分析&#xff1a;启动注册流程 介绍了 containerd 作为…

赶快收藏!全网最佳Set集合详解:HashSet、TreeSet!

先赞后看&#xff0c;Java进阶马上一大半 海外geeksforgeeks网站画了这么一张Set集合的层次结构图&#xff0c;基本把Set集合涉及的常用类关系给标明了。 大家好&#xff0c;我是南哥。 一个Java学习与进阶的领路人&#xff0c;相信对你通关面试、拿下Offer进入心心念念的公司…

arthas使用

1.安装arthas 我的是windows #打开cmd&#xff0c;执行以下命令 &#xff0c;下载jar curl -O https://arthas.aliyun.com/arthas-boot.jar2.启动本地的idea项目 3.进入到jdk的bin文件夹 jdk的配置在“高级系统设置” 进入jdk的bin目录 4.启动arthas 5.arthas使用 trace 类…

Elasticsearch自动补全功能实践与Java API应用

Elasticsearch是一个强大的搜索引擎&#xff0c;它不仅支持全文搜索&#xff0c;还提供了自动补全功能&#xff0c;可以显著提升用户体验。自动补全功能允许用户在输入查询时实时显示建议项&#xff0c;帮助用户快速找到所需信息。本文将介绍如何使用Elasticsearch的RestHighLe…

探索Java Stream API:高效处理集合的利器

文章目录 一、Stream API简介1.1 什么是Stream&#xff1f;1.2 Stream的特点 二、Stream API的基本操作2.1 创建Stream2.2 中间操作2.3 终端操作 三、Stream API的高级应用3.1 并行Stream3.2 复杂数据处理3.3 Stream与Optional 四、最佳实践例子 1: 筛选和映射例子 2: 排序和收…