谷歌浏览器调试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在for循环中绑定事件解决事件参数不同的情况
Jan 20 Javascript
创建自己的jquery表格插件
Nov 25 Javascript
JS延时提示框实现方法详解
Nov 26 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
Oct 18 Javascript
css和js实现弹出登录居中界面完整代码
Nov 26 Javascript
jquery实现楼层滚动效果
Jan 01 jQuery
JavaScript中AOP的实现与应用
May 06 Javascript
ElementUI多个子组件表单的校验管理实现
Nov 07 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
Dec 13 Javascript
ant design vue导航菜单与路由配置操作
Oct 28 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
Nov 11 Javascript
如何使用原生Js实现随机点名详解
Jan 06 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快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
php验证手机号码
2015/11/11 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
Javascript点击按钮随机改变数字与其颜色
2016/09/01 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
详解nodejs express下使用redis管理session
2017/04/24 NodeJs
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
vue实现计算器功能
2020/02/22 Javascript
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
SQL Server数据库笔试题和答案
2016/02/04 面试题
法人委托书范本
2014/04/04 职场文书
工厂搬迁方案
2014/05/11 职场文书
2014年材料员工作总结
2014/11/19 职场文书
高一军训决心书
2015/02/05 职场文书
银行催款通知书
2015/04/17 职场文书
入党转正介绍人意见
2015/06/03 职场文书
礼貌问候语大全
2015/11/10 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
详解flex:1什么意思
2022/07/23 HTML / CSS