详解js中的console对象

对于前端开发而言,console对象大家肯定都很熟悉,最常用的 console.log() 是开发调试必用的

但是对于console对象的其他方法,相对而言使用的就比较少了。下面详细介绍一下:

谷歌浏览器输出console对象:

值得一提的是不同浏览器输出console对象的内容有些许差异,像火狐浏览器中就没有context()和creatTask() 方法,我们这里只介绍通用的。按照分类如下:

1、log、warn、info、error、debug 日志级别

console.log("我是console.log 输出内容");
console.warn("我是console.warn 输出内容");
console.error("我是console.error 输出内容");
console.info("我是console.info 输出内容"); // 谷歌、edge浏览器不支持info方法,火狐浏览器器显示和log一样
console.debug("我是console.debug 输出内容"); // 谷歌和edge浏览器不支持debug方法,火狐浏览器器显示和log一样

Edge: 

Chrome:

 Firefox:

 只有火狐浏览器显示了 console.debug,并且显示了 console.info 前面的图标。

2、console.assert()

 console.assert(expression, message[, ...args]);
  • expression: 必需参数,这是一个要进行断言判断的布尔表达式。如果其计算结果为 true,则断言通过;否则,断言失败。
  • message: 必需参数,当断言失败时要在控制台输出的错误消息字符串。可以使用模板字面量(template literals)或字符串拼接等方式包含动态信息。
  • [...args]: 可选参数,零个或多个附加参数。这些参数将在 message 字符串中按照占位符的位置被替换。类似于 console.log() 中的参数扩展。
console.assert(1 + 1 === 3, "出错啦,1+1应该等于2");

3、console.dir()

用于以结构化、可交互的方式显示给定对象的所有属性和方法。此方法有助于开发者深入理解对象的内部结构及其继承关系。 

const person = {name: "Alice",age: 30,greet() {console.log("Hello, " + this.name);},
};
console.log(person.greet);
console.dir(person.greet);

 第一个是 console.log() 输出内容,第二个是 console.dir() 输出内容

 4、console.count() 和 console.countReset()

console.count() 是一个用于统计特定标签在控制台中出现次数的方法。每次调用 console.count() 时,如果传入的标签与之前调用过的相同,则对应的计数值会递增;如果标签不同,则会创建一个新的计数项。这种方法对于跟踪代码中特定事件(如用户交互、循环迭代等)的发生次数非常有用。

console.countReset() 是与 console.count() 配合使用的控制台方法,用于重置特定标签的计数器。当需要重新开始计数或者清除某个计数器时,可以调用此方法。

console.count("Button clicked");
console.count("Form submitted");
console.count("Button clicked");
console.countReset("Button clicked");
console.log("已经执行了countReset方法");
console.count("Button clicked");

 

5、console.dirxml() 

console.dirxml() 是一个用于在浏览器控制台中以结构化方式显示 XML 或 HTML 元素及其子节点的方法。它特别适用于查看 DOM 节点的层次结构和属性。

// 获取页面上的一个元素
const myElement = document.getElementById("myDiv");
// 使用 console.dirxml() 输出该元素的结构和属性
console.dirxml(myElement);

6、console.group()、console.groupEnd()、console.groupCollapsed()

console.group() 是一个用于在浏览器控制台中组织日志输出的方法,它允许将一系列相关的日志消息归类到一个可折叠的组内,从而提高日志的可读性和管理性。

console.groupCollapsed() 和 console.group() 的区别就是 console.groupCollapsed()默认是折叠的,可以手动展开。console.group() 默认是展开的,可以手动折叠

// 创建一个名为 "User Login Process" 的日志分组
console.group("User Login Process");
// 在分组内输出相关日志
console.log("Checking user credentials...");
console.warn("Weak password detected!");
console.info("Session token generated.");
// 结束当前日志分组
console.groupEnd();// 创建一个名为 "User Login Process" 的日志分组
console.groupCollapsed("groupCollapsed");
// 在分组内输出相关日志
console.log("Checking user credentials...");
console.warn("Weak password detected!");
console.info("Session token generated.");
// 结束当前日志分组
console.groupEnd();

 

 7、console.memory() 

console.memory 提供了有关当前网页所占用内存的相关信息。通过访问和打印 console.memory,开发者可以获取到有关页面内存使用情况的概览数据,这对于诊断内存泄漏、优化性能等问题非常有用。

  • usedJSHeapSize: 返回当前页面已使用的 JavaScript 堆大小(以字节为单位)。这包括了 V8 引擎分配给 JavaScript 对象、闭包、字符串、正则表达式等的内存。
  • totalJSHeapSize: 返回当前页面 JavaScript 堆的总大小(以字节为单位),包括已使用部分和尚未分配的部分。
  • jsHeapSizeLimit: 返回当前页面 JavaScript 堆的最大允许大小(以字节为单位)。超过此限制可能会导致 V8 引擎触发垃圾回收或内存压缩。
// 输出当前内存使用情况
console.log(console.memory);
// totalJSHeapSize: 整个 JavaScript 堆的大小(以字节为单位),包括已分配对象和空闲空间。
console.log("Total JS Heap Size:", console.memory.totalJSHeapSize);
// usedJSHeapSize: 已分配给 JavaScript 对象的实际内存(以字节为单位),不包括空闲空间。
console.log("Used JS Heap Size:", console.memory.usedJSHeapSize);
// jsHeapSizeLimit: JavaScript 堆的最大允许大小(以字节为单位)。
console.log("JS Heap Size Limit:", console.memory.jsHeapSizeLimit);

8、console.profile() 和 console.profileEnd()

console.profile() 是一个用于启动 JavaScript CPU 性能分析器的方法。它可以追踪指定时间段内函数调用、事件处理等的执行情况,包括调用次数、耗时、CPU 占用等信息,有助于识别代码中的性能瓶颈。

// 执行需要分析的代码
function heavyComputation() {// 启动一个名为 "My Function Performance" 的性能分析 sessionconsole.profile("My Function Performance");for (let i = 0; i < 10000000000; i++) {}// 结束性能分析 sessionconsole.profileEnd();
}
heavyComputation();

9、 console.table()

console.table() 是一个用于在浏览器控制台以表格形式展示数组或对象集合的方法。它将数据结构清晰、直观地呈现出来,便于开发者快速浏览和分析大量数据。

// 示例一:展示数组数组
const products = [["Product A", 10, 20],["Product B", 15, 25],["Product C", 20, 30],
];
console.table(products);// 示例二:展示对象数组
const users = [{ name: "Alice", age: 25, role: "Admin" },{ name: "Bob", age: 30, role: "Editor" },{ name: "Charlie", age: 35, role: "Viewer" },
];
console.table(users);// 示例三:指定显示的列
console.table(users, ["name", "role"]);

10、console.time()、console.timeEnd()、console.timeLog()、console.timeStamp()

console.time() 是一个用于测量一段代码执行时间的方法。它可以帮助开发者量化代码块或特定任务的运行时长,用于性能分析和优化。

console.timeEnd() 是与 console.time() 配合使用的另一个方法,用于停止计时器并输出测量的代码执行时间。

console.timeLog() 是一个用于在计时器运行期间输出中间时间点的方法。它与 console.time() 和 console.timeEnd() 结合使用,允许在计时器未结束时记录和输出中间时间点的信息,有助于更细粒度地监控和分析代码执行情况。

console.timeStamp() 是一个用于在浏览器控制台的时间轴(Timeline)面板中插入标记的方法。它可以帮助开发者在时间线上标注特定事件的发生时间,以便于分析和可视化程序执行流程。

console.time("for循环这段代码执行了");
for (let i = 0; i < 100000000; i++) {}
console.timeEnd("for循环这段代码执行了");// 开始计时器,标记为 "Long Running Task"
console.time("Long Running Task");
// 执行需要计时的任务
for (let i = 0; i < 100; i++) {// 在任务的不同阶段记录中间时间点if (i === 50) {console.timeLog("Long Running Task","Halfway through the task");}// ... 执行任务相关代码 ...
}
// 结束计时器并输出总执行时间
console.timeEnd("Long Running Task");// 标记一个名为 "User Interaction" 的时间点
console.timeStamp("User Interaction");
// ... 进行其他操作 ...
// 标记另一个名为 "Async Request Start" 的时间点
console.timeStamp("Async Request Start");
// ... 异步请求处理 ...
// 标记名为 "Async Request End" 的时间点
console.timeStamp("Async Request End");

11、console.trace()

console.trace() 是一个用于在浏览器控制台输出当前执行位置的调用堆栈跟踪信息的方法。可以帮助开发者定位代码执行的具体路径,特别是在处理错误、异常或调试复杂调用关系时非常有用。

function outerFunction() {innerFunction();
}
function innerFunction() {console.trace(); // 输出堆栈跟踪信息
}
outerFunction();

12、console.clear()

清空控制台

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

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

相关文章

JAVA MQTT 发布主题请求,订阅主题接收,订阅主题回复,发布主题再接收回复,三步走

先看效果 一、准备工作 1.官网下载emqx压缩包放到自己的盘符下&#xff0c;不要带中文路径 下载 EMQX 2.在路径的bin中&#xff0c;cmd&#xff0c;启动emqx服务 emqx start 3.访问服务&#xff0c;能打开就证明启动成功&#xff0c;登录的话官网默认的密码账号&#xff08;…

【C#】Stopwatch计时器

使用Stopwatch检查C#中代码块的执行时间&#xff0c;比如歌曲&#xff0c;图片的下载时间问题 首先&#xff0c;我们可看到Stopwatch 类内部的函数。 根据需求&#xff0c;我们具体可使用到 Start() 开始计时&#xff0c;Stop() 停止计时等 //创建 Stopwatch 实例 Stopwatch …

STM32单片机C语言模块化编程实战:LED控制详解与示例

一、开发环境 硬件&#xff1a;正点原子探索者 V3 STM32F407 开发板 单片机&#xff1a;STM32F407ZGT6 Keil版本&#xff1a;5.32 STM32CubeMX版本&#xff1a;6.9.2 STM32Cube MCU Packges版本&#xff1a;STM32F4 V1.27.1 之前介绍了很多关于点灯的方法&#xff0c;比如…

ARM DMIPS算力说明

ARM DMIPS算力说明 ARM算力参考官网地址 https://en.wikipedia.org/wiki/List_of_ARM_processors Product familyARM architectureProcessorFeatureCache (I / D), MMUTypical MIPS MHzReferenceARM1ARMv1ARM1First implementationNoneARM2ARMv2ARM2ARMv2 added the MUL (mu…

【SSM进阶学习系列丨整合篇】Spring+SpringMVC+MyBatis 框架配置详解

文章目录 一、环境准备1.1、创建数据库和表1.2、导入框架依赖的jar包1.3、修改Maven的编译版本1.4、完善Maven目录1.5、编写项目需要的包1.6、编写实体、Mapper、Service 二、配置MyBatis环境2.1、配置mybatis的主配置文件2.2、编写映射文件2.3、测试环境是否正确 三、配置Spri…

el-table 三角形提示

<template><div><el-table :data"tableData" style"width: 100%"><el-table-column prop"ddd" label"日期2" width"150" /><el-table-column prop"ddd" label"日期2" width…

[C++][算法基础]分组背包问题(动态规划)

有 &#x1d441; 组物品和一个容量是 &#x1d449; 的背包。 每组物品有若干个&#xff0c;同一组内的物品最多只能选一个。 每件物品的体积是 &#xff0c;价值是 &#xff0c;其中 &#x1d456; 是组号&#xff0c;&#x1d457; 是组内编号。 求解将哪些物品装入背包&a…

AI大模型探索之路-训练篇1:大语言模型微调基础认知

文章目录 前言一、微调技术概述二、微调的必要性三、大模型的微调方法四、微调过程中的技术细节五、微调后的模型评估与应用总结 前言 在人工智能的广阔研究领域内&#xff0c;大型预训练语言模型&#xff08;Large Language Models, LLMs&#xff09;已经成为推动技术革新的关…

一、路由基础

1.路由协议的优先级 路由器分别定义了外部优先级和内部优先级&#xff08;越小越优&#xff09; 路由选择顺序&#xff1a;外部优先级>>内部优先级&#xff08;相同时&#xff09; ①外部优先级&#xff1a;用户可以手工为各路由协议配置的优先级 ②内部优先级&#xf…

OmniPlan Pro for Mac v4.8.0中文激活版 项目流程管理工具

OmniPlan Pro for Mac是一款功能强大的项目管理软件&#xff0c;它以其直观的用户界面和丰富的功能&#xff0c;帮助用户轻松管理各种复杂的项目。 OmniPlan Pro for Mac v4.8.0中文激活版 通过OmniPlan Pro&#xff0c;用户可以轻松创建任务&#xff0c;设置任务的开始和结束时…

Pulsar【部署 02】Pulsar可视化工具Manager安装使用

Pulsar Manager 是一个基于 web 的 GUI 管理和监视工具&#xff0c;可帮助管理员和用户管理和监视租户、命名空间、主题、订阅、代理、集群等&#xff0c;并支持对多个环境进行动态配置。 可视化工具Manager安装使用 1.Docker1.1 拉取镜像并启动1.2 设置用户名密码1.3 登录并添…

openstack界面简单修改

openstack Ubuntu主题登录界面修改修改登陆界面背景登录框边缘添加透明效果修改登录界面logo更换站点图片更换项目logo图片 本实验基于VMware17&#xff0c;使用Ubuntu2310搭建openstack-B版 Ubuntu主题 以下配置只对Ubuntu主题生效 登录界面修改 原界面 关闭登录界面域名输…

LTD271次升级 | 网站/小程序可设访问IP的黑白名单 • 官微中心支持PDF等办公文件预览与并分享 • 订单退款显示更详尽明细

1、新增IP访问限制功能&#xff1b; 2、订单新增交易号显示与退款明细显示&#xff1b; 3、自定义地址增加四级地区&#xff1b; 4、Android版App优化文件功能&#xff1b; 5、已知问题修复与优化&#xff1b; 01 官微中心 1) 新增IP限制访问功能 允许或者禁止某些 IP 或…

信创需求激增,国产服务器操作系统赋能数字化转型

信创&#xff0c;即信息技术应用创新&#xff0c;是指在关键领域和环节推进信息技术的自主创新&#xff0c;构建安全可控的信息技术体系。随着数字化转型的加速&#xff0c;信创需求激增&#xff0c;国产服务器操作系统在其中扮演着至关重要的角色。国产服务器操作系统如何赋能…

WPF —— lCommand命令实例

首先在标签页面设置一个Button按钮 <Button Width"100" Height"40" Content"测试" ></Button> 1 创建一个类 继承于ICommand这个接口&#xff0c; 这个接口一般包含三部分&#xff1a; 俩个方法&#xff1a;一个判断指令是不是…

【树莓派】yolov5 Lite,目标检测,树莓派4B,推理v5lite-e_end2end.onnx,摄像头实时目标检测

文章目录 YOLOv5 Lite: 在树莓派上轻松运行目标检测1. 环境配置2. 克隆项目3. 安装依赖项4. 下载模型权重5. 理解end2end的含义6. 示例推理7. 文件介绍8. 把文件弄到树莓派4B执行9. 进一步尝试fp16的onnx&#xff08;行不通&#xff09;10. 视频流检测 这里有大概的环境配置&am…

淘宝图片搜索API接口:技术原理、使用方法与最佳实践指南

淘宝图片搜索API接口技术详解 在数字化时代&#xff0c;图片搜索已经成为一种高效、直观的信息检索方式。淘宝作为国内最大的电商平台&#xff0c;其图片搜索API接口对于提高购物体验和商家运营效率具有重要意义。本文将详细解析淘宝图片搜索API接口的技术原理、使用方法和注意…

WordPress安装报错常见问题

WordPress安装过程很简单&#xff0c;不过还是有些朋友会碰到安装WordPress出错的情况。前不久我们遇到Hostease的客户在安装wordpress的时候遇到安装wordpress出错。显示数据连接错误。 数据库连接失败 数据库连接失败是最常见的错误情况。 添加图片注释&#xff0c;不超过 …

ASP.NET集成客户关系管理的企业网站的设计与开发

摘 要 企业要在激烈的市场竞争中立于不败之地&#xff0c;就必须找一种全新的管理理念和管理手段&#xff0c;对其内部和外部资源进行有效的整合。新一代ERP产品正在向客户端和供应端延伸&#xff0c;客户端的延伸即是客户关系管理。对于每个企业来说客户管理的完善程度将直接…

LeetCode in Python 48. Rotate Image/Matrix (旋转图像/矩阵)

旋转图像/矩阵的重点是寻找旋转前后对应位置的坐标关系。 示例&#xff1a; 图1 旋转图像/矩阵的输入输出示意图 代码&#xff1a; class Solution:def rotate(self, matrix):n len(matrix)for i in range(n // 2):for j in range(i, n - 1 - i):topleft matrix[i][j]ma…