谷歌浏览器调试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给input和textarea设定ie中的focus
May 29 Javascript
jQuery把表单元素变为json对象
Nov 06 Javascript
jquery对单选框,多选框,文本框等常见操作小结
Jan 08 Javascript
jquery禁止回车触发表单提交
Dec 12 Javascript
jQuery实现可用于博客的动态滑动菜单
Mar 09 Javascript
Bootstrap每天必学之按钮(一)
Nov 24 Javascript
jquery插件Jplayer使用方法简析
Apr 22 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
Jan 03 Javascript
AngularJs分页插件使用详解
Jun 30 Javascript
基于javascript的拖拽类封装详解
Apr 19 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
Jun 13 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
Sep 18 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获取网页里所有图片并存入数组的方法
2015/04/06 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
Node.js检测端口(port)是否被占用的简单示例
2016/09/29 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
python生成指定尺寸缩略图的示例
2014/05/07 Python
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
Python如何生成xml文件
2020/06/04 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
探亲邀请信范文
2014/01/30 职场文书
爱国演讲稿400字
2014/05/07 职场文书
青年标兵事迹材料
2014/08/16 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python