谷歌浏览器调试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 相关文章推荐
jQuery 回车事件enter使用示例
Feb 18 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
Mar 28 Javascript
jquery分页插件jpaginate在IE中不兼容问题
Apr 22 Javascript
推荐一个自己用的封装好的javascript插件
Jan 29 Javascript
javascript随机显示背景图片的方法
Jun 18 Javascript
基于jQuery实现美观且实用的倒计时实例代码
Dec 30 Javascript
jQuery实现简单隔行变色的方法
Feb 20 Javascript
jQuery使用经验小技巧(推荐)
May 31 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
Oct 28 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
Feb 13 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
Jan 25 Javascript
JavaScript实现抖音罗盘时钟
Oct 11 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+mysql一个名片库程序
2006/10/09 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
取选中的radio的值
2010/01/11 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
Vue.js学习教程之列表渲染详解
2017/05/17 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
python 动态调用函数实例解析
2019/10/21 Python
TensorFlow加载模型时出错的解决方式
2020/02/06 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
应聘护士自荐信
2013/10/21 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
桥梁工程专业求职信
2014/04/21 职场文书
大学生党员自我批评思想汇报
2014/10/10 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers