教你如何使用firebug调试功能了解javascript闭包和this


Posted in Javascript onMarch 04, 2015

对于跟我一样,自学javascript且没有其他语言学习经验的人来说,一开始的时候,javascript的调试也是一个比较大的难点,很多基础的东西都需要自己去摸索,这个过程是非常苦闷的。

想着趁机会将上面那篇闭包博文的配图用firebug再来演示一遍,也算是一点调试经验分享。

示例代码如下:

function fn(){
var max = 10;

return function bar(x){

    if (x > max) {

    
console.log(x);

    }

}

}

var fl = fn(),

max = 100;

fl(15);

选择firebug——脚本

教你如何使用firebug调试功能了解javascript闭包和this

右侧监控栏可以window对象以及变量max、fl、fn。

同时下面也可以看到window的属性,以location为例,可以直接在“控制台”运行window.location输出,进一步可以window.location.href输出location的href属性值。当然,一般在引用window对象的属性和方法时,不需要用“window.xxx”这种形式,而直接使用“xxx”。

言归正传,

回到“脚本”栏,通过打“断点”的方式调试javascript和查看变量值。

有几个概念可以先了解下:断点、单步进入、单步跳过、单步退出。这里就不详叙了。

本次主要是采用设置断点、单步进入的方式。

可以在左侧行标处单击设置断点,断点右键可以正则判断。

可以设置多个断点,“断点”栏内可以删除已设置的断点。

这里就直接在script标签的开始处打断点并刷新页面。

此时

1、右边监控区域原window对象处变成this,并指向window。在“控制台”输出this.location会得到location一样的结果。

2、全局变量max、fl初始化为undefined

3、fn()是函数声明,因为解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问)

教你如何使用firebug调试功能了解javascript闭包和this

点击右上角的“单步进入”按钮

逐次执行代码并在监控区域查看this、各个变量的值变化以及堆栈的情况。可以和推荐的那篇博客相互参照来看。

然后再来一个this的例子
代码如下:

var name = 'The Window';

var obj = {

  name: 'The local',

  getNameFunc: function () {

    console.log(this.name);

    return function () {

      console.log(this.name);

    };

  }

};

var c = obj.getNameFunc();

c();

依然“单步进入”,可以看到在执行c()这行代码的时候,进入到getNameFunc里面,this从指向window对象变为obj,控制台输出‘The local'。

逐步执行可以非常清晰的看到整个代码的运行逻辑。

以上就是本文关于使用Firebug的调试功能了解javascript闭包和this的方法总结了,希望大家能够喜欢

Javascript 相关文章推荐
jquery复选框CHECKBOX全选、反选
Aug 30 Javascript
Jquery 扩展方法
May 06 Javascript
js控制input框只读实现示例
Jan 20 Javascript
php读取sqlite数据库入门实例代码
Jun 25 Javascript
简介JavaScript中setUTCSeconds()方法的使用
Jun 12 Javascript
jQuery代码实现发展历程时间轴特效
Jul 30 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
Sep 28 Javascript
详解js删除数组中的指定元素
Oct 31 Javascript
JavaScript实现页面中录音功能的方法
Jun 04 Javascript
手写Vue弹窗Modal的实现代码
Sep 11 Javascript
Angular8 实现table表格表头固定效果
Jan 03 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
Sep 16 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
Mar 04 #Javascript
jQuery插件开发的五种形态小结
Mar 04 #Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
Mar 04 #Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
Mar 03 #Javascript
jQuery实现复选框成对选择及对应取消的方法
Mar 03 #Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
Mar 03 #Javascript
JS实现文字放大效果的方法
Mar 03 #Javascript
You might like
一个程序下载的管理程序(三)
2006/10/09 PHP
php正则校验用户名介绍
2008/07/19 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
用javascript实现画板的代码
2007/09/05 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
Python网页正文转换语音文件的操作方法
2018/12/09 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
python输入多行字符串的方法总结
2019/07/02 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
日语专业毕业生求职信
2013/12/04 职场文书
2014年终工作总结范本
2014/12/15 职场文书
东京审判观后感
2015/06/01 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
2016年记者节感言
2015/12/08 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js