谷歌浏览器调试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 相关文章推荐
javascript 模拟点击广告
Jan 02 Javascript
JavaScript获取DOM元素的11种方法总结
Apr 25 Javascript
JQuery.Ajax()的data参数类型实例详解
Nov 20 Javascript
解决React Native端口号修改的方法
Jul 28 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
Aug 31 Javascript
解决vue 引入子组件报错的问题
Sep 06 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
Nov 21 Javascript
详解vue 兼容IE报错解决方案
Dec 29 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 jQuery
Vue 数组和对象更新,但是页面没有刷新的解决方式
Nov 09 Javascript
JavaScript switch语句使用方法简介
Dec 30 Javascript
javascript实现简易计算器功能
Sep 23 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
上海无线电三厂简史修改版
2021/03/01 无线电
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
使PHP自定义函数返回多个值
2006/11/26 PHP
php pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
浅谈php扩展imagick
2014/06/02 PHP
PHP基本语法实例总结
2016/09/09 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
详解javascript appendChild()的完整功能
2018/08/18 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
Python ZipFile模块详解
2013/11/01 Python
python获取远程图片大小和尺寸的方法
2015/03/26 Python
仅利用30行Python代码来展示X算法
2015/04/01 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
pytorch 求网络模型参数实例
2019/12/30 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
2020/01/20 Python
pycharm的python_stubs问题
2020/04/08 Python
python实现图片转字符画
2021/02/19 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
养殖人员的创业计划书范文
2013/12/26 职场文书
战略合作意向书范本
2014/04/01 职场文书
《长征》教学反思
2014/04/27 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
2014年建筑工作总结
2014/11/26 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书