教你如何使用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技巧来提高你的代码(个人觉得那个jquery的手册很不错)
Feb 10 Javascript
jquery 插件学习(一)
Aug 06 Javascript
jquery插件制作 手风琴Panel效果实现
Aug 17 Javascript
JavaScript的递归之递归与循环示例介绍
Aug 05 Javascript
javascript继承机制实例详解
Nov 20 Javascript
jQuery实现仿Google首页拖动效果的方法
May 04 Javascript
Java与JavaScript中判断两字符串是否相等的区别
Mar 13 Javascript
JSON与js对象序列化实例详解
Mar 16 Javascript
详解JS数值Number类型
Feb 07 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
Sep 23 Javascript
微信小程序弹窗禁止页面滚动的实现代码
Dec 30 Javascript
Javascript生成器(Generator)的介绍与使用
Jan 31 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
相对路径转化成绝对路径
2007/04/10 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
浅谈PHP中的
2016/04/23 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
基于javascript的无缝滚动动画1
2020/08/07 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
python求质数列表的例子
2019/11/24 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
求职信的要素有哪些呢
2013/12/26 职场文书
批评与自我批评发言稿
2014/10/15 职场文书
学校党支部承诺书
2015/04/30 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技