见过太多同学调试Javascript只会用简单的console.log
甚至alert
,看着真为他们捉鸡。。因为大多数同学追求优雅而高效地写代码,却忽略了如何优雅而高效地调试代码,不得不说是有点“偏科”了。下面我就分享一些实用且聪明的调试技巧,希望能让大家调试自己代码的时候更加从容自信。
1. 不要使用alert
首先,alert
只能打印出字符串,如果打印的对象不是String
,则会调用toString()
方法将该对象转成字符串(比如转成[object Object]
这种),所以除非你打印String
类型的对象,其他什么信息都获取不到。其次,alert
会阻塞UI和javascript的执行,必须点击'OK'按钮才能继续,非常低效。所以,喜欢使用alert
的同学可以改改这个习惯了。
2. 学会使用console.log
console.log
谁都会用,但是很多同学只知道最简单的console.log(x)
这样打印一个对象,当你的代码里面console.log
多了之后,会很难将某条打印结果和代码对应,所以我们可以给打印信息加上一个标签便于区分:
let x = 1; console.log('aaaaaaaa', x);
得到:
标签不一定要有明确的含义,视觉效果显著就可以了,当然有明确意义更好。
事实上,console.log
可以接收任意多的参数,最后将这些对象拼接输出,比如:
如果打印信息过多,不容易找到目标信息的话,可以在控制台中进行过滤:
注意点
在使用console.log
打印一个引用类型(比如数组和自定义对象)的对象的时候,输出结果可能并不是执行console.log
方法那个时间点的值。举个例子:
可以发现两个console.log
输出的结果展开后都是[1, 2, 3, 4]
,因为数组是引用类型,所以在展开后获取到的都是数组最新的状态。我们可以使用JSON.parse(JSON.stringify(...))
来解决这个问题:
3. 学会使用console.dir
我们有时候想看看一个DOM对象里面到底有什么属性和方法,但是常规的console.log
打印出来的只是HTML标签,就像这样:
和直接审查元素没有什么区别。
如果我们想看到DOM对象作为JavaScript对象的结构可以使用console.dir
,比如:
事实上,console.dir
可以打印出任何JavaScript对象的属性列表,比如打印一个方法:
4. 学会使用console.table
我们经常会遇到这样的场景:获取到一个用户列表,每个用户有很多属性,但是我们只想查看其中的某些属性,在用console.log
打印出来的时候需要把每个用户对象展开一个个查看,非常麻烦。而console.table
完美的解决这个问题,比如我只想获取到下列用户的id和坐标:
console.log
打印结果:
console.table
打印结果:
非常的准确和快速!
5. 学会使用console.time
有时候我们想知道一段代码的性能或者一个异步方法需要运行多久,这时候需要用到定时器,JavaScript提供了现成的console.time
方法,例如:
6. 使用debugger打断点
有时候我们需要打断点进行单步调试,一般会选择在浏览器控制台直接打断点,但这样还需要先去Sources里面找到源码,然后再找到需要打断点的那行代码,比较费时间。使用debugger
关键词,我们可以直接在源码中定义断点,方便很多,比如:
7. 查到源码文件
有时候我们想在控制台的Sources
中查找某个js源文件,要把文件夹逐一点开找,非常麻烦。其实Chrome提供了文件的搜索功能,只不过大部分时候我们给忽略了。。
只要按Command + P
(windows的快捷键请自行查看)就能弹出搜索框搜索你想要找的文件啦:
8. 压缩JS文件的阅读
有时候我们需要在Sources
中阅读一段js代码,但是发现它被压缩了,Chrome也提供了和方便的格式化工具,让代码变得重新可读:
点完之后变成这样:
以上就是我个人在平时比较常用的一些调试小技巧,如果大家有其他好的调试技巧也欢迎分享,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]