谷歌浏览器调试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之三(构建选择器)
Jun 11 Javascript
在图片上显示左右箭头类似翻页的代码
Mar 04 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
Apr 17 Javascript
JavaScript中对象property的读取和写入方法介绍
Dec 30 Javascript
jquery trigger实现联动的方法
Feb 29 Javascript
解决拦截器对ajax请求的拦截实例详解
Dec 21 Javascript
Angular.Js中ng-include指令的使用与实现
May 07 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
Aug 16 Javascript
JavaScript 有用的代码片段和 trick
Feb 22 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
Oct 14 Javascript
vue 获取url里参数的两种方法小结
Nov 12 Javascript
Ajax异步刷新功能及简单案例
Nov 20 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 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
PHP图片加水印实现方法
2016/05/06 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
浅谈PHP进程管理
2019/03/08 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
Javascript 中的类和闭包
2010/01/08 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
Numpy之文件存取的示例代码
2018/08/03 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
python 命名规范知识点汇总
2020/02/14 Python
python 元组的使用方法
2020/06/09 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
学习雷锋倡议书
2014/04/15 职场文书
小学校本培训方案
2014/06/06 职场文书
销售顾问工作计划书
2014/09/15 职场文书
个人委托书怎么写
2014/09/17 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
2014年双拥工作总结
2014/11/21 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
vue elementUI表格控制对应列
2022/04/13 Vue.js
Java版 简易五子棋小游戏
2022/05/04 Java/Android