Chrome 是 Google 出品的一款非常优秀的浏览器,其内置了开发者工具(Windows 系统中按下 F12 即可开启),可以让我们方便地对 JavaScript 代码进行调试。

为方便大家学习和使用,本文我对 Chrome 的调试技巧做个系统的总结。

一、设置断点

有两种方法可以给代码添加断点:

方法1:在 Source 内容区设置

(1)找到要调试的文件,然后在内容源代码左侧的代码标记行处点击,即可打上一个断点。

(2)刷新浏览器,当页面代码运行到断点处便会暂停执行。

方法2:在 js 文件中设置

(1)我们在 js 源文件中需要执行断点操作的代码前加上 debugger。

(2)刷新浏览器,当页面代码运行到断点处会暂停执行。

二、设置断点执行条件

(1)右键点击设置的断点,选择 Edit breakpoint...

(2)输入执行断点的条件表达式,当表达式为 true 时断点调试才会生效。有了条件断点,我们在调试代码的时候能够更加精确地控制代码断点的时机。

三、Call Stack 调用栈

1,界面介绍

(1)当断点执行到某一程序块处停下来后,右侧调试区的 Call Stack 会显示当前断点所处的方法调用栈,从上到下由最新调用处依次往下排列。

(2)Call Stack 列表的下方是 Scope Variables 列表,可以查看此时局部变量和全局变量的值。

2,使用技巧

(1)调试时当前调用在哪里,Call Stack 列表里的箭头便会指向哪里。同时当我们点击调用栈列表上的任意一处,便会调到相应的位置,方便我们再回头去看看代码。

(2)如果想重新从某个调用方法处执行,可以右键选择 Restart Frame。断点就会跳到此处开头重新执行,同时 Scope 中的变量值也会依据代码重新更改,这样就可以方便地回退来重新调试,省得我们再重新刷新整个页面。

四、DOM 元素设置断点

1,DOM Breakpoints 介绍

除了可以给 js 代码设置断点,我们还可以给 DOM 元素设置断点。因为我们有时候需要监听和查看某个元素的变化、赋值情况,但是并是不太关心哪一段代码对它做的修改,只想看看它的变化情况,那么可以给它来个监听事件。

2,使用说明

(1)我们右键点击需要监听的 DOM 节点,选择“Break On...”菜单项,在出现的三个选择项中任选一个便会添加断点。

(2)这三个选择项分别对应如下三种修改情况:

  • suntree modifications:子节点修改
  • attribute modifications:自身属性修改
  • node removal:自身节点被删除。

(3)设置好断点后,当 DOM 元素要被修改时,代码就会在自动停留在修改处。

五、统一管理所有断点

我们可能会在不同的文件、不同的位置添加许多断点。这些都会显示在 Source 页面里的 Breakpoints、DOM Breakpoints 区域中:

  • Breakpoints:js 断点
  • DOM Breakpoints:DOM 元素断点

点击断点前面的复选框可以暂时“去掉/加上”该断点,点击断点可跳转到相应的程序代码处。

六、快捷键

1,快速定位文件

使用快捷键:ctrl + p

2,快速定位文件中成员函数

使用快捷键:ctrl + shif + o

七、格式化

1,js代码格式化

为了减小体积,有时候我们发现一些 js 源码都是压缩之后的代码,我们可以点击下面的 {} 大括号按钮将代码转成可读格式。

2,格式化返回的 JSON 数据

(1)有时我们调试程序时需要查看服务端返回的数据内容,这个在 Network 选项卡中就可看到。但如果后台返回的是没有格式化的 JSON 数据,查看起来会异常痛苦。

(2)我们可以通过 chrome 控制台的 copy 接口来实现 JSON 数据的格式化。

(3)首先请求项的右键菜单中选择 Copy Response 拷贝响应内容。

(4)命令行中先输入 copy(),然后将拷贝的数据粘贴到括号中。

(5)回车后 copy 接口便会自动将数据进行格式化,并保存到剪贴板中。我们将其粘贴到文本编辑器中就可以看到效果:

八、使用 Snippets 编写代码片段

1,Snippets 介绍

(1)在 Souces 页面下的 Snippets 栏目中,我们可以随时进行 JS 代码的编写,运行结果会打印到控制台。

(2)代码是全局保存的,我们在任何页面,包括新建标签页,都可以查看或运行这些代码。我们不再需要为了运行一小段 JS 代码而新建一个 HTML 页面。

(3)Snippets 的方便之处在于,我们只需要打开 Chrome 就可以编写一份任意页面都可以运行的JS代码。

2,使用样例

(1)点击“New Snippet”按钮,创建一个新的片段文件。

(2)在代码区域输入 js 代码

(3)按下“Ctrl + Enter”或者点击右下方的按钮执行代码,可以看到代码执行成功且反应到当前页面上了。

九、Async 调试

Chrome 调试器的 Async 模式是为调试异步函数所设计一个功能。

1,测试代码

下面是一段使用 Promise 的代码:

//做饭
function cook(){console.log('开始做饭。');var p = new Promise(function(resolve, reject){  //做一些异步操作setTimeout(function(){console.log('做饭完毕!');resolve('鸡蛋炒饭');}, 1000);});return p;
}//吃饭
function eat(data){console.log('开始吃饭:' + data);var p = new Promise(function(resolve, reject){ //做一些异步操作setTimeout(function(){console.log('吃饭完毕!');resolve('用过的碗和筷子');}, 2000);});return p;
}cook()
.then(eat)
.then(function(data){console.log(data);
});

2,代码调试

(1)我们都知道 Promise 的回调是异步执行的,默认情况下调用栈只记录到回调函数本身,我们无法找到代码执行的顺序,这给我们调试带来巨大的困难。

(2)开启 Async 模式后,异步函数之前的调用栈都会被记录下来,而且调用栈中代码执行状态也得到了保留。

转自:Chrome - JavaScript调试技巧总结(浏览器调试JS) - 一个大西瓜咚咚咚 - 博客园 (cnblogs.com)

Chrome - JavaScript调试技巧总结(浏览器调试JS)相关推荐

  1. 前端入门技巧之浏览器调试

    前端调试是用来测试前端开发代码BUG比较常用的方式,通过调试我们可以把一些BUG提前扼杀在摇篮里.今天小千就来教大家利用Chrome谷歌浏览器进行前端的调试,web前端初学者一定要好好看一下啦. 为什 ...

  2. 浏览器调试技巧(debugger调试)

    之前调试前端代码,都是用console.log()打印信息,实在是个大捞比, 今天大佬告诉我可以用debugger调试,我的天,新大陆新姿势啊!(本人前端菜鸡) 示例代码 //查询方法function ...

  3. JavaScript怎么识别360浏览器?JS识别360急速模式方案,360流氓浏览器

    首先来侮辱一下360,360毕竟是一家流氓底子的企业,所以它做什么软件总是透露出一种流氓气息,让你感受它的流氓风格,国内能与之媲美的流氓企业WPS可以争锋一下(题外话),下面来具体说说  360浏览器 ...

  4. 12个常用的javascript简写技巧---可以大大减少js代码量

    微信公众号 个人博客 知乎 本文是并非本人所写,只是我看了觉得对自己很有帮助,所以分享给大家,原文链接在最下面,谢谢观看. 1. 空(null, undefined)验证 当我们创建了一个新的变量,我 ...

  5. 一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试

    一:背景 1. 讲故事 每次项目预交付的时候,总会遇到各种奇葩的坑,我觉得有必要梳理一下以及如何快速解决的,让后来人避避坑,这篇就聊聊自己的所闻所遇: 我去,本地环境代码跑的哧溜,上了测试环境出问题 ...

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

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

  7. JavaScript 断点调试技巧

    大家好,我是若川.最近组织了源码共度活动:1个月,200+人,一起读了4周源码,参与的小伙伴都表示收获很大.如果感兴趣可以点击链接扫码加我微信 ruochuan12.之前推荐过很多次调试文章,说明调试 ...

  8. css 浏览器调试中不可见_前端入门必会的初级调试技巧

    本文仅仅针对前端初学者,目的是[用20%不到的时间] 学会[前端最常用的部分调试技巧],如果需要最详细的调试技巧,包括调试性能优化的相关知识,文末会补充最全的文档(chrome devtool的官方文 ...

  9. 《Debug Hacks》和调试技巧

    Debug Hacks 作者为吉冈弘隆.大和一洋.大岩尚宏.安部东洋.吉田俊辅,有中文版<Debug Hacks中文版-深入调试的技术和工具>.这本书涉及了很多调试技巧,对调试器使用.内核 ...

  10. VC++调试技巧学习总结

    VC6.0调试方法 有时候,我们编写好一个程序后,希望通过调试来知道变量值的变化情况,下面我和大家分享一下怎么利用VC6.0来查看变量值变化情况. 工具/原料 VC6.0软件.待测试程序 方法/步骤 ...

最新文章

  1. OpenCV的cvLoadImage函数
  2. HttpRequest 与HttpWebRequest 有什么区别
  3. 【DataGuard】ORA-16014 and ORA-00312 Messages in Alert.log of Physical Standby
  4. python with方法
  5. [RabbitMQ]整合SpringBoot
  6. java8新特性_Java8新特性_lambda表达式
  7. oracle查看表中记录数,Oracle 查询某一用户下所有表的记录数
  8. 测试Word2013发布博客
  9. 你写的api接口代码真是_百度AI接口之JavaAPI方式调用示例代码[持续完善中]
  10. Word文档打印又出新方法!Spire.Doc全新代码让文档更清晰
  11. 核心指导网络由任务编码器_如何在现实世界中与实际用户一起指导您的编码和编码生涯...
  12. Google Authenticator(谷歌身份验证器)C#版
  13. Scikit-learn API:train_test_split函数 将数据分割为训练集和测试集
  14. Excel技巧:如何用函数删除换行符、文本前空格、文本中间空格?
  15. 技术人从职场中脱颖而出的成长秘诀
  16. 机器学习——回归模型
  17. VMware安装ubuntu kylin
  18. python的意思是什么_python-x%2 == 0是什么意思?
  19. C#4.0 操作IE浏览器自动填表支付宝网站完整实例代码
  20. ZipArchive打开文件时的错误代码

热门文章

  1. 一个针对小白的蘑菇制作过程(二)
  2. WindowsAPI之joystickapi(游戏摇杆)头文件4
  3. 【开源夏令营优秀开题报告】专题之二 - 嵌入式与智能硬件类合集
  4. WACV 2023 | ImPosing:用于视觉定位的隐式姿态编码
  5. 【数据结构pta】L3-1-二叉树及其遍历 / 二叉搜索树 / 完全二叉树 是否完全二叉搜索树分数 30
  6. 2021年软件水平考试会改革吗?
  7. 树莓派4B摄像头的详细使用教程(拍照+录像+监控)
  8. SonarQube 数据清理,从100G 到9G
  9. 【数据结构】AOV网——拓扑排序
  10. 内网(离线)如何安装vue