JavaScript指定断点操作实例教程


Posted in Javascript onSeptember 18, 2018

前言

虽然网上已经有多的数不清的调试教程了,但仍然没有发现哪篇文章写的通俗易懂,索性自己尝试写写自己的一些使用习惯或者说是心得,希望对那些还不是很懂得使用断点调试的孩子有一些帮助

本文将给大家详细介绍关于JavaScript指定断点操作的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

什么是断点操作(Breakpoint action)

做前端开发的小伙伴,或许对这个断点操作不是很熟悉。不过你要是问其他语言(比如C,C++ ,C #等)的开发者,他们应该都挺熟悉断点操作,这种断点操作在诸如XCode或者Visual Studio的IDE中都会有提供。

以下一段话来自知乎

断点操作 (Action) 的意义是设置追踪点 (Tracepoint)。追踪点相当于是一种临时的有 Trace 功能的断点,它会把消息 打印到 Output 窗口。

JavaScript指定断点操作实例教程

Breakpoint Action

勾选后面的继续执行 (Continue Execution),代表 Tracepoint 命中时,Debugger 不会停下来,否则将会在此处停下来。两种情况下,消息都会打印出来。

JavaScript说:我需要断点操作

试想一个这样的场景,我希望程序在运行的时候,可以观察某一行上某个变量或者表达式的值。你一定会说,这不是很简单嘛:

  • 在指定的位置放置debugger语句,或这个在此处打一个断点,然后使用console或者变量监听来观察变量的值。
  • 动态插入console.log代码。

看起来,第二种方式是更好的一种方式。动态插入代码当然可以使用chrome的live edit功能。当时我们希望有一个不直接修改代码的方式。此时你或许会想,那就设置一个断点操作吧。

JavaScript如何设置断点操作

前端的童鞋们一定知道,JavaScript的调试大部分都是在浏览器里面操作的,而这个浏览器,大部分时候是Chrome。因为Chrome的调试功能强大而方便。(相信你不会反对吧)。
然而让大家失望的是,chrome根本就没有设置断点操作的功能啊,自然其他浏览器也没有。相信你此时的心情是这样的:

没T你说个XX。

看官们不要着急,且听我们慢慢道来。在Chrome断点调试的时候,可以使用条件断点,所谓条件断点,指定一个条件,在符合这个条件的时候。执行会停止在断点处,否则执行直接往下执行。如下图,在Line Number的地方点击右键,选中 Add conditionnal breakpoint

JavaScript指定断点操作实例教程
条件断点

然后,输入条件,比如params.value == 'value'这样的条件表达式,如下图:

JavaScript指定断点操作实例教程

断点条件

有关条件断点说明,如果你仍然不是很熟悉的话,可以自己多参考相关资料。

但是,这个断点操作有什么关系呢?要知道,JavaScript是一门动态语言。条件判断其实是可以输入任何代码片段的。比如下面的代码:

if(express)

即便是express不是一个bool值或者bool值的表达式或者返回bool的函数,都是可以的。这就方便我们的操作。

JavaScript说道 : 我最机智。

JavaScript指定断点操作实例教程

不要脸的JavaScript

因此在条件断点的条件输入框中,我们可以输入我们想执行的断点操作即可以,比如console.log。如图所示

JavaScript指定断点操作实例教程

断点操作

最终会在控制台打印出来你要查看的值,如图所示:

JavaScript指定断点操作实例教程
打印结果

由于console.log返回值是undefined的(最终转换为false),所以代码并不会被停止在此处,而是会直接往下执行,这相当于前面讲述断点操作概念的继续执行。如果需要停止在这儿,可以设置如下的表达式即可:

JavaScript指定断点操作实例教程

断点操作 中断执行

结语

条件断点的设计并不是为此而设计的。所以这是一种hack,不是标准方式,不是本来的设计方式。但是,不是很多Web开发都会使用hack的吗。 用起来方便就行。

通过这种方式,相当于可以不用修改代码,临时性的加入我们想执行的代码片段。

很多同学都喜欢在工程中直接使用console.log,这样在实际发布的时候,最终有需要删除这些console.log代码,增加了工作量。通过这种方式,或许可以减少原本产品代码中的consle.log。

使用这种方式,还可以动态改变一些变量的值。我们知道有时候,某些bug只在某些特定的值才能复现,这些值可能是服务端推送过来的,此时调试的值,就可能依赖于后端传递的值。其实可以在前端的页面,通过这种方式,强制改变某些值,使得bug复现,而不依赖于后台的值。比如:

JavaScript指定断点操作实例教程

修改变量

参考

  • https://3water.com/article/147623.htm
  • https://www.visualmicro.com/page/User-Guide.aspx?doc=Working-With-Breakpoints-When-Hit.html

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript实现tabs选项卡切换效果(自写原生js)
Mar 19 Javascript
php和js对数据库图片进行等比缩放示例
Apr 28 Javascript
Jquery Ajax方法传值到action的方法
May 11 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
Mar 05 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
Mar 27 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
Nov 25 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
Apr 03 Javascript
VueJS全面解析
Nov 10 Javascript
jQuery图片轮播功能实例代码
Jan 29 Javascript
微信小程序 图片上传实例详解
May 05 Javascript
小程序实现分类页
Jul 12 Javascript
使用vuex存储用户信息到localStorage的实例
Nov 11 Javascript
对VUE中的对象添加属性
Sep 18 #Javascript
微信小程序适配iphoneX的实现方法
Sep 18 #Javascript
小程序兼容安卓和IOS数据处理问题及坑
Sep 18 #Javascript
解决vue attr取不到属性值的问题
Sep 18 #Javascript
vue动画打包后失效问题的解决方法
Sep 18 #Javascript
vue自定义全局共用函数详解
Sep 18 #Javascript
vue-自定义组件传值的实例讲解
Sep 18 #Javascript
You might like
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
jQuery 1.0.2
2006/10/11 Javascript
checkbox 复选框不能为空
2009/07/11 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
2013/08/27 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
Javascript验证方法大全
2015/09/21 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
jquery对象和DOM对象的相互转换详解
2016/10/18 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
党员公开承诺书范文
2014/03/25 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
python flask开发的简单基金查询工具
2021/06/02 Python
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript