本文系统整理了12个Chrome浏览器控制台的高级调试技巧,涵盖debugger断点、console.table表格展示、DOM元素快速选取、函数调用追踪、压缩代码格式化、黑盒脚本屏蔽及自定义日志样式等实用功能。帮助前端开发者快速定位逻辑错误,提升调试效率与代码质量。
前言
前端调试的重要性与目标
调试能力是技术研发中不可或缺的核心技能。熟练掌握各类调试方法,能显著提高工作效率,实现事半功倍。例如,快速定位问题根源、降低故障发生率以及辅助分析逻辑错误等。随着互联网前端开发地位日益重要,掌握高效的前端调试技巧对于降低开发成本、提升工作效能显得尤为关键。
本文将逐一解析多种前端JavaScript调试技巧。无论您是已经熟练掌握的老手,借此温习巩固;还是希望探索新方法的进阶者,以此拓展视野;亦或是初涉调试领域的新手,借此填补知识空白,本文都将提供有价值的参考。
基础调试工具:debugger与对象展示
一、使用'debugger'语句
除了console.log,debugger是另一个备受推崇的快速调试工具。在代码中插入debugger语句后,Chrome浏览器会在执行到该行时自动暂停,效果类似于C或Java中的断点机制。此外,您还可以在条件控制逻辑中插入该语句,例如:
if (thisThing) {
debugger;
}
二、以表格形式展示对象
当需要查看复杂对象的详细信息时,最简单的方法是使用console.log并将其展示为列表,通过上下滚动进行浏览。然而,使用console.table以表格形式展示对象会更加直观清晰,效果大致如下:
var animals = [
{ animal: 'Horse', name: 'Henry', age: 43 },
{ animal: 'Dog', name: 'Fred', age: 13 },
{ animal: 'Cat', name: 'Frodo', age: 18 }
];
console.table(animals);

响应式测试与DOM元素快速操作
三、多屏幕尺寸测试
Chrome提供了一个极具吸引力的功能,即模拟不同设备的屏幕尺寸。只需在Chrome的开发者工具(Inspector)中点击“切换设备模式”(toggle device mode)按钮,即可在不同设备的屏幕尺寸下进行调试,方便响应式设计的测试。

四、在Console中快速选定DOM元素
在Elements面板中选择某个DOM元素后,在Console中直接引用该元素是常见的操作。Chrome Inspector会将最后5个选中的DOM元素缓存到历史记录中,您可以使用类似Shell中的$0等快捷方式来快速关联到这些元素。例如,如果列表中包含‘item-4’、‘item-3’、‘item-2’、‘item-1’和‘item-0’这几个元素,您可以按如下方式使用:

函数追踪与代码格式化技巧
五、获取函数的调用追踪记录
JavaScript框架极大地简化了开发工作,但也引入了大量预定义函数,如创建View、绑定事件等。这使得追踪自定义函数的调用过程变得困难。尽管JavaScript语言相对宽松,有时难以理清执行流程,特别是在审查他人代码时。此时,console.trace就能发挥作用,它可以帮助您追踪函数的调用链。例如,在以下代码中,我们需要追踪car对象中funcZ的调用过程:
var car;
var func1 = function() {
func2();
}
var func2 = function() {
func4();
}
var func3 = function() {
}
var func4 = function() {
car = new Car();
car.funcX();
}
var Car = function() {
this.brand = ‘volvo';
this.color = ‘red';
this.funcX = function() {
this.funcY();
}
this.funcY = function() {
this.funcZ();
}
this.funcZ = function() {
console.trace(‘trace car')
}
}
func1();
通过上述方式,可以清晰地看到func1调用了func2,func2调用了func4,func4创建了Car的实例并调用了car.funcX。
六、格式化被压缩的代码
有时在生产环境中发现奇怪的问题,却忘记将source maps部署到服务器上,或者在查看其他网站源代码时,面对一堆难以阅读的压缩代码,Chrome提供了一个人性化的反压缩工具来增强代码可读性。使用方法大致如下:

高级调试:函数定位与脚本屏蔽
七、快速定位并调试函数
当需要在函数内部添加断点时,通常有两种做法:
1. 在Inspector中找到指定代码行,然后手动添加断点。
2. 在脚本中显式添加一个debugger调用。
然而,这两种方法都存在一个小缺点,即都需要先找到对应的脚本文件,再定位到具体行号,操作较为繁琐。这里介绍一种更快捷的方法:在Console中使用debug(funcName),脚本会在指定函数处自动停止。需要注意的是,这种方法无法在私有函数或匿名函数处生效,因此需根据具体情况灵活选择:
var func1 = function() {
func2();
};
var Car = function() {
this.funcX = function() {
this.funcY();
}
this.funcY = function() {
this.funcZ();
}
}
var car = new Car();

八、屏蔽不相关的脚本运行
在开发现代网页时,通常会使用第三方框架或库,这些代码经过测试且Bug较少。但在调试自己的脚本时,可能会意外跳转到这些第三方文件中,导致额外的调试工作。解决方案是屏蔽这些不需要调试的脚本运行,详情请参考文章:javascript-debugging-with-black-box。
日志样式自定义与函数监测
在复杂的调试场景中,为了区分输出的关键信息,我们习惯使用console.log、 console.debug、 console.warn、 console.info和console.error等命令,以便在Inspector中进行过滤。不过,有时我们希望自定义显示样式,可以通过CSS来定义个性化的日志信息样式:
console.todo = function(msg) {
console.log(‘ % c % s % s % s‘, ‘color: yellow; background - color: black;', ‘–‘, msg, ‘–‘);
}
console.important = function(msg) {
console.log(‘ % c % s % s % s', ‘color: brown; font - weight: bold; text - decoration: underline;', ‘–‘, msg, ‘–‘);
}
console.todo(“This is something that' s need to be fixed”);
console.important(‘This is an important message');

在console.log()中,您可以使用%s代表字符串,%i代表数字,以及%c代表自定义的CSS样式。
九、监测指定函数的调用与参数
在Chrome中可以监测指定函数的调用情况以及参数:
var func1 = function(x, y, z) {
};

这种方式能够让您实时监控传入指定函数的具体参数。
元素查询与API调试及DOM监测
十、在Console中使用$进行元素查询
在Console中也可以使用$进行类似于querySelector的基于CSS选择器的查询。$('css-selector')会返回匹配的第一个元素,而$$('css-selector')会返回所有匹配的元素。请注意,如果多次使用某个元素,建议将其存入变量中以提高效率。

十一、利用浏览器进行API调试
许多人习惯使用Postman进行API调试或发起Ajax请求,但别忘了浏览器自带的Network面板也能完成这些工作。您无需担心认证问题,因为Cookie会自动随请求发送。只需在Network标签页中即可查看,大致效果如下:

十二、检测DOM变化
DOM的变化有时难以预测,但Chrome提供了一个小功能:当DOM发生变化时会发出提醒。您可以监测属性变化等事件:

总结
以上就是本文的全部内容,希望这些内容能对您的JavaScript学习或使用有所帮助。如有任何疑问,欢迎留言交流。