实用Javascript调试技巧分享(小结)

 更新时间:2019年06月18日 09:06:10   作者:MudOnTire  
这篇文章主要介绍了实用Javascript调试技巧分享(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

见过太多同学调试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也提供了和方便的格式化工具,让代码变得重新可读:

点完之后变成这样:

以上就是我个人在平时比较常用的一些调试小技巧,如果大家有其他好的调试技巧也欢迎分享,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JS遍历ul下的li点击弹出li的索引的实现方法

    JS遍历ul下的li点击弹出li的索引的实现方法

    这篇文章主要介绍了JS遍历ul下的li点击弹出li的索引的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • js键盘方向键 文章翻页跳转的效果[小说站常用已支持firefox]

    js键盘方向键 文章翻页跳转的效果[小说站常用已支持firefox]

    一些小说或图片类网站,为了方便大家阅读,往往会加入利用键盘方向键进行翻页、返回上一级、返回目录、回首页等功能。
    2009-05-05
  • 判断JavaScript对象是否可用的最正确方法分析

    判断JavaScript对象是否可用的最正确方法分析

    在调试JavaScript的过程中,你是不是经常会遇到object undefined的问题呢?你平时是怎样来测试对象是否存在呢?判断浏览器版本?判断JavaScript版本?本文来告诉你正确的方法。这篇文章涉及的浏览器可能古老一些,但是阐述的道理确实适合现在使用的。
    2008-10-10
  • JS绘图Flot如何实现可选显示曲线图功能

    JS绘图Flot如何实现可选显示曲线图功能

    这篇文章主要介绍了JS绘图Flot如何实现可选显示曲线图功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • JavaScript搜索字符串并将搜索结果返回到字符串的方法

    JavaScript搜索字符串并将搜索结果返回到字符串的方法

    这篇文章主要介绍了JavaScript搜索字符串并将搜索结果返回到字符串的方法,涉及javascript中match方法操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • JS闭包经典实例详解

    JS闭包经典实例详解

    这篇文章主要介绍了JS闭包,结合一个经典实例较为详细的分析了javascript闭包的原理及使用方法,需要的朋友可以参考下
    2018-12-12
  • 使用JSON.parse将json字符串转换成json对象的时候会出错

    使用JSON.parse将json字符串转换成json对象的时候会出错

    使用JSON.parse将json字符串转换成json对象的时候会出错,主要是双引号,回车换行等影响明显,左尖括号和右尖括号也会导致显示问题
    2014-09-09
  • moment.js使用超详细教程

    moment.js使用超详细教程

    Moment.js是一个轻量级的JavaScript时间库,它方便了日常开发中对时间的操作,提高了开发效率下,本文给大家介绍moment.js使用超详细教程,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • js实现模拟购物商城案例

    js实现模拟购物商城案例

    这篇文章主要为大家详细介绍了js实现模拟购物商城案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 实现变速回到顶部的JavaScript代码

    实现变速回到顶部的JavaScript代码

    一般网页的下方都会放置一个置顶按钮, 尤其是页面底部没有导航的网页, 这样可以帮助访客重新找到导航或者重温一遍广告 (想得真美).
    2011-05-05

最新评论