Day09 - Console 调试各种姿势指南

简介: Day09 - Console 调试各种姿势指南 作者:©liyuechun简介:JavaScript30 是 Wes Bos 推出的一个 30 天挑战。项目免费提供了 30 个视频教程、30 个挑战的起始文档和 30 个挑战解决方案源代码。

作者:©liyuechun
简介:JavaScript30Wes Bos 推出的一个 30 天挑战。项目免费提供了 30 个视频教程、30 个挑战的起始文档和 30 个挑战解决方案源代码。目的是帮助人们用纯 JavaScript 来写东西,不借助框架和库,也不使用编译器和引用。现在你看到的是这系列指南的第 9 篇。完整中文版指南及视频教程在 从零到壹全栈部落

项目效果


各种调试正确姿势

.log 的更多用法

这个是最常用的,但它还有一些更多功能:比如参数支持类似 C 语言的字符串替换模式。

  • %s 字符串
  • %d 整数
  • %f 浮点值
  • %o Object
  • %c 设定输出的样式,在之后的文字将按照第二个参数里的值进行显示
console.log("I am a String: %s ", "log"); //log
console.log("I am a int number: %d ", 1); //1
console.log("I am a float number: %d ", 1.23); //1.23
let dog = {name: "Lucky",age: "5"};
console.log("%o",dog);
console.log("%c3D Text"," text-shadow: 0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15);font-size:5em");

清空 console 面板输出内容

要清空已经打印输出的内容,有两种方式,一种是 JavaScript 语句: console.clear()。另一个是快捷键 Ctrl + L

不同样式的输出

除了常规的 log 之外,还有一些其他已设定好的样式,区别在于图标或者颜色不一样:

// warning!
console.warn("用于输出警示信息");
// Error :|
console.error("用于输出错误信息");
// Info
console.info("用于输出提示性信息");
//debug
console.debug("用于输出调试信息");

打印DOM节点

获取 DOM 元素之后,可以直接打印输出。

const p = document.querySelector('p');
console.log(p);
console.dir(p);
  • .log 输出这个 DOM 的 HTML 标签。
  • .dir 则会输出这个 DOM 元素的属性列表。

断点调试

console.asset(arg1,arg2)方法接受一个表达式作为参数,如果参数返回值是false,则会输出第二个参数中的内容。

const p = document.querySelector('p');
console.assert(p.classList.contains('ouch'), 'That is wrong!');

打印表格

console.table()方法,可以将数组、对象以表格的形式打印输出,如果只输出其中的某一列,可以加上第二个参数,如下所示:

const dogs = [{ name: 'Snickers', age: 2 }, { name: 'hugo', age: 8 }];
console.table(dogs);
console.table(dogs, ["age"]);

分组打印

const dogs = [{ name: 'Snickers', age: 2 }, { name: 'hugo', age: 8 }];
dogs.forEach(dog => {
    console.group(`${dog.name}`);        
//  console.groupCollapsed(`${dog.name}`);  // 列表默认叠起状态
    console.log(`${dog.name}`);
    console.log(`${dog.age}`);
    console.log(`${dog.name} 有 ${dog.age} 岁了`);
    console.groupEnd();
});

group()方法中可以传入这个分组的名称。group()/groupCollapsed() groupEnd() 之间的内容会自动分组,区别在于是否能自动折叠。


console.count() 计数

通过console.count()可以对输出的对象进行计数。但需要注意的是这里的计数对象仅限于由 count() 输出的内容,并非所有 console 中的输出。

time 计时

time("name")timeEnd("name") 分别控制开始点和结束点,它们两的参数表示当前计时的名称,可以自定义但需要保持相同。所以如果想看异步获取数据花了多场时间,可以这样写:

console.time('fetch my data');
fetch("https://api.github.com/users/soyaine")
  .then(data => data.json())
  .then(data => {
  console.timeEnd('fetch my data');
  console.log(data);
});

如果 timeEnd 中的名称如果和上面不一样,得到的数据是系统当前时间换算后的毫秒值。

源码下载

Github Source Code

春哥简介

简介: 资深讲师,全栈工程师;区块链、高可用架构技术爱好者。
个人博客:http://liyuechun.org
新浪微博:黎跃春-追时间的人
github:http://github.com/liyuechun

技术交流

  • 区块链技术交流QQ群:348924182
  • 「区块链部落」官方公众号

相关文章
|
9月前
|
人工智能 自然语言处理 数据可视化
校企合作|TsingtaoAI携手潍坊学院,共建AI驱动的党建信息化系统
TsingtaoAI与潍坊学院近日达成合作,正式签署《人工智能党建信息化系统开发》技术开发合同,计划在未来两年内联合开发一套集党员教育、党务管理、党建活动智能化以及数据可视化于一体的智能党建系统。本次合作将充分结合TsingtaoAI在AI大模型领域的技术优势和潍坊学院的学术资源,为推动党建工作的数字化、智能化和高效化注入新的动力。
177 10
|
12月前
|
人工智能 自然语言处理 数据库
揭秘RAG与Embedding的强强联合:如何让大模型在专业领域中唤醒沉睡的知识,实现智能化突破?
【10月更文挑战第6天】知识图谱与语义嵌入技术推动了AI领域的进步。RAG结合检索与生成模型,通过检索相关文档片段辅助生成过程,提升模型质量。Embedding技术则提供丰富语义信息,增强自然语言处理能力。二者结合,尤其在专业领域如医药研究中,显著提高了AI处理复杂任务的精度与智能化水平。
403 2
|
定位技术 C++ Python
ArcMap软件卡在加载界面且闪退无法打开的多种解决办法
ArcMap软件卡在加载界面且闪退无法打开的多种解决办法
716 1
|
前端开发 物联网
物联网和前端技术,两者相辅相成并且互相促进 —— 阿里云 MVP 黄强专访
物联网行业的大发展必然带来应用需求的爆发,而这个趋势下的前端技术的发展,目的就是要让应用开发变得更加高效,满足更加复杂、更加多变的应用开发场景。 物联网和前端技术,两者相辅相成并且互相促进。
2663 0
|
JavaScript 前端开发 算法
3D 碰撞检测
文介绍了用于在 3D 环境中实现碰撞检测的不同边界体积技术。
362 0
|
供应链 安全 算法
FSC公链金融项目开发特性分析
FSC公链是基于FSC技术建构的公共区块链网络
备案变更不用再担心中断服务啦!
备案变更不用再担心中断服务啦!
1039 0
备案变更不用再担心中断服务啦!
kindeditor富文本编辑器插件 如何实现将本地的图片复制粘贴
目前的需求是 将桌面上的一张图片,进行复制后,可以粘贴到富文本编辑器里面,借用了大佬的这个方法,但是ie浏览器,粘贴图片的时候没办法触发这个paste方法 不知道是因为啥?求大佬帮助
|
边缘计算 城市大脑 人工智能
智慧城市当中的新型测试手段: 赛马机制、AB测试和混沌工程
随着智慧城市如火如荼地建设,城市管理的智能化程度越来越高,诸如城市大脑、边缘计算、数字孪生等新技术的融入,给城市管理者带来了新的工具,也为市民的生活带来了极大的便利。在城市智能化建设过程中,总不可或缺的涌现多种新技术新思路。这些用于城市治理领域的新技术、新思路,和互联网领域的新技术有着异曲同工之妙,为智慧城市的评测提供了有利的武器。
1539 2
|
缓存 Rust 前端开发
2022,前端工具链十年盘点
2021 的年度盘点我们选择了一个特别的形式,把时间范围拉长到 10 年,梳理前端工具链里的 12 个重要的包的发布和版本更新时间,结合 npm 下载数据,看看前端的工具链在这十年间有怎样的演变。
804 0
2022,前端工具链十年盘点