javascript代码调试 debugger的使用

使用调试js代码的时候我们常常使用浏览器 手动的打断点 如果代码量比较大的话就需要用到debugger了

定义和用法

debugger 语句用于停止执行 JavaScript,并调用 (如果可用) 调试函数。

使用 debugger 语句类似于在代码中设置断点。

通常,你可以通过按下 F12 开启调试工具, 并在调试菜单中选择 “Console” 。

注意: 如果调试工具不可用,则调试语句将无法工作

//开启 debugger ,代码在执行到第三行前终止
var x = 15 * 5;
debugger;
document.getElementbyId("demo").innerHTML = x;

见过太多同学调试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对象的属性列表,比如打印一个方法:

推荐大家使用Fundebug,一款很好用的BUG监控工具~

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

点完之后变成这样:

javascript调试 debugger 代码调试相关推荐

  1. python 如何边改代码边调试_Python 代码调试神器:PySnooper

    给大家推荐本我自己写的电子书<PyCharm中文指南>,把各种 PyCharm 的高效的使用技巧用GIF动态图的形式展示出来.有兴趣的可以看它的在线文档: http://pycharm.i ...

  2. Eclipse中调试Python代码--调试FWTools2.4.7中的gdal_retile.py

    Eclipse中调试Python代码 Gdal_retile.py是用于对遥感影像创建金字塔,近期本人想读懂改程序中的代码.读懂代码的较好方式就是单步调试,但是由于之前没有学过Python语言,不但对 ...

  3. vscode+node.js 调试js程序/edge浏览器调试javaScript/edge浏览器独立调试编辑并保存代码/浏览器内开发者工具element/console布局(focus Mode)

    文章目录 declaration vscode 对于javascript的支持 环境 使用node.js调试纯js代码 使用浏览器调试 试验代码 Note! edge浏览器独立调试编辑并保存代码 窗格 ...

  4. 1、alert(111) 直接打印出 111 2、debugger 写在代码要调试的地方 3、直接在控制台 source 里找到要调试的代码打断点 4、consol

    1.alert(111)       直接打印出 111 2.debugger        写在代码要调试的地方 3.直接在控制台 source 里找到要调试的代码打断点 4.console 常用的 ...

  5. VS2008 JS调试和Silverlight 后台代码调试 相互影响的问题。---自己做实例证明

    但是有几点要注意.首先,不能在同一调试过程中调试托管代码和脚本.(即XAML.cs 和JAVASCRIPT) 这就是说,如果在XAML的隐藏代码中设置一个断点,并且已经打开了Silverlight调试 ...

  6. 中国商标网JS调试 - 动态代码注入

    中国商标网JS调试 - 动态代码注入 中国商标网JS调试 - 动态代码注入 前言 背景 工具 知识点 正文 了解 Fiddler Script Session 处理函数 反调试策略 问题分析 解决思路 ...

  7. 前端代码调试:Webstorm调试js

    [前言] 目前前端开发JavaScript的debug一般都是用chrome和firefox的开发者工具进行调试,浏览器工具使用不方便,webstorm支持了在代码上打断点,在编辑器里debug js ...

  8. pdb+ipdb 调试 Python代码

    pdb+ipdb 调试 Python代码 pdb 和 ipdb 的主要作用是用于 Python 程序的单步调试,Python 的调试可参考链接. ipdb exports functions to a ...

  9. 【转】Python 代码调试技巧

    原文网址:http://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/ Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助 ...

  10. 使用 vscode 调试前端代码

    使用 vscode 调试前端代码 今天我们以webpack项目为基础讲解配置 复制代码 1. 安装插件 Debugger for Chrome 2. 修改 config/index.js 将devto ...

最新文章

  1. 汉字转拼音(VB版)
  2. 手把手教你在Mac OS下载、编译及导入Android源码
  3. 万万想不到:吸烟的辐射量比原子弹爆炸点还厉害!
  4. 《你的灯亮着吗?》个人总结
  5. kdj指标主要看哪个值_悟空CRM:在线crm主要看这两个指标,都非常重要!
  6. esc指令检查打印状态_【行业知识分享】八千字解读ESC系统
  7. Windows server 2008 R2 服务器安装 MySql 5.6.36 64位绿色版 报系统错误1067
  8. python判断字符串中[提取、判断只含有、判断不含有]中文
  9. c++的类中,声明一个对象好还是用指针申请一块空间好?
  10. JDK10、JDK11、JDK12新特性
  11. 【综合篇】Web前端性能优化原理问题
  12. C++入门教程(一)
  13. Typora_Markdown_图片标题(题注)
  14. vm 无法打开本地文件进行写入
  15. asp mysql rs.recordcount_在ASP中出现RecordCount=-1的解决方法
  16. Linux系统之查找文件和打包压缩文件
  17. Java改良贪吃蛇小游戏
  18. 秋名山老司机从上车到翻车的悲痛经历,带你深刻了解什么是Spark on Hive!
  19. 自监督论文阅读笔记Reading and Writing: Discriminative and Generative Modelingfor Self-Supervised Text Recogn
  20. 计算机控制版面交换鼠标左右键,鼠标左右键怎么互换呢?左右键互换设置方法...

热门文章

  1. [阅读笔记]Modern C++ Programming with Test-Driven Develpment chp2
  2. PHP DeepL翻译API
  3. CocoStudio 骨骼动画制作过程
  4. 汇编语言 王爽 第四版 实验3
  5. 系统动力学仿真软件Vensim下载
  6. JAVA毕业设计台球收费管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库
  7. linux安装中文输入法
  8. 2020计算机核心期刊,中国科技核心(2019–2020中文核心期刊目录)
  9. Haroopad--最好用的markdown编辑器
  10. silk lobe资源公众号_微小说全免费阅读公众号阅读网资源推荐