谷歌浏览器调试JavaScript小技巧


Posted in Javascript onDecember 29, 2014

谷歌浏览器不仅仅可以用来上网,对于开发人员来说,它更像是一款强大的开发辅助工具。

工欲善其事必先利其器,接下来笔者给大家分享一些Chrome的使用方法。

假如读者了解如何在Chrome中添加JavaScript断点,那请继续阅读;否则,自行脑补。

假如有这样一段代码:

var a = 1;
function test(){

    var a, b, c, d, e;
    a = 2;

    b = a - 1;

    b = 9;

    c = 3;

    d = 4;

    e = (a + b * c) * (a - d);
    return e;

}
test();

代码本身并不重要,重要的是形式。

假如e是我们最终需要的结果,但是发现结果不正确,于是我们在给e赋值的这一行下断点。

谷歌浏览器调试JavaScript小技巧

下断点之后,把鼠标移动到某个变量上,稍作停留,Chrome便会提示你该变量此时的值。

谷歌浏览器调试JavaScript小技巧

但无奈于表达式比较复杂,仅仅看单个变量的值,没什么作用。看起来都挺正常,计算完就不对了。

这时候,你很可能想知道(a + b c)这一部分的结果,别着急,先将表达式选中,然后将鼠标移动到选中的区域上,稍作停留。

谷歌浏览器调试JavaScript小技巧

Chrome直接告诉你答案了。更有意思的还在后边。

直接在选中的区域单击鼠标右键,会弹出一个菜单,最上边两项分别为:[Add to watch]、[Evaluate in console]。具体对应的视图参考图片。

谷歌浏览器调试JavaScript小技巧

所谓watch,可以理解为监控,有些表达式比较重要,可能需要在整个调试过程中,实时监控该表达式的值,这时就可以用watch。

举个例子,我们把断点设置在"b = 9;"这一行,然后添加watch:"a - b",值为1。如图:

谷歌浏览器调试JavaScript小技巧

点击下一步,执行"b = 9;",也就是说b的值发生了变化,此时再看看watch:"a - b"的值,为-7。

谷歌浏览器调试JavaScript小技巧

这样就达到了实时监控的效果,调试起来更加方便快捷。

接下来再看看console是怎么回事。

console当然就是控制台了,表达式可以直接在控制台中求值。

比如想知道(a + b c)的结果,直接copy到控制台上,回车,结果就出来了。

等等,好像哪里不对的样子,凭什么控制台知道a、b、c的值?

在没有断点的情况下,在控制台中执行JavaScript代码,是面向全局的。也就是说,此时在控制台中定义一个变量x,这个x的作用域是全局的。

如果在程序中断的情况下使用控制台,那么控制台的作用域面向中断处的作用域。也就是说,在哪里设置的断点(或者是代码执行到了哪里),控制台的作用域就在哪里。

就本例而言,在全局范围内定义了一个变量a,值为1;同时又在function test作用域定义了一个局部变量a,值为2。在"a = 2;"处下断点,在控制台中输入a,回车,打印出undefined。

谷歌浏览器调试JavaScript小技巧

因为此时程序在function test内部中断,程序执行到了function test中,所以控制台的作用域也在function test中,因此输入a访问的是局部变量a,而此时局部变量a并未赋值,所以结果为undefined。

这次就先分享这么多,以后遇到给力的继续分享,希望对读者有所帮助。

Javascript 相关文章推荐
获取URL地址中的文件名和参数的javascript代码
Sep 02 Javascript
jquery validator 插件增加日期比较方法
Feb 21 Javascript
在AngularJS应用中实现一些动画效果的代码
Jun 18 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
jquery插件uploadify多图上传功能实现代码
Aug 12 Javascript
js控住DOM实现发布微博效果
Aug 30 Javascript
node.js实现回调的方法示例
Mar 01 Javascript
vue的Virtual Dom实现snabbdom解密
May 03 Javascript
angularjs实现上拉加载和下拉刷新数据功能
Jun 12 Javascript
微信小程序的tab选项卡的实现效果
May 15 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
Jun 13 Javascript
vue自定义switch开关组件,实现样式可自行更改
Nov 01 Javascript
JavaScript中的console.trace()函数介绍
Dec 29 #Javascript
JavaScript中的console.profile()函数详细介绍
Dec 29 #Javascript
jQuery中element选择器用法实例
Dec 29 #Javascript
JavaScript中的console.time()函数详细介绍
Dec 29 #Javascript
JavaScript前端图片加载管理器imagepool使用详解
Dec 29 #Javascript
JavaScript版的TwoQueues缓存模型
Dec 29 #Javascript
浅谈重写window对象的方法
Dec 29 #Javascript
You might like
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
Javascript的闭包详解
2014/12/26 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
高中军训感言400字
2014/02/24 职场文书
《菜园里》教学反思
2014/04/17 职场文书
老干部工作先进事迹
2014/08/17 职场文书
学校会议通知范文
2015/04/15 职场文书
运动会广播稿300字
2015/08/19 职场文书
Pytorch中的学习率衰减及其用法详解
2021/06/05 Python
详解OpenCV曝光融合
2022/04/29 Python