教你如何使用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 相关文章推荐
用js自动判断浏览器分辨率的代码
Jan 28 Javascript
细说javascript函数从函数的构成开始
Aug 29 Javascript
JavaScript获取路径设计源码
May 22 Javascript
基于angular实现模拟微信小程序swiper组件
Jun 11 Javascript
基于AngularJS实现表单验证功能
Jul 28 Javascript
JS鼠标3次点击事件实现代码及扩展思路
Sep 12 Javascript
浅谈node模块与npm包管理工具
Jan 03 Javascript
JS中利用FileReader实现上传图片前本地预览功能
Mar 02 Javascript
Vue全局分页组件的实现代码
Aug 10 Javascript
vue element中axios下载文件(后端Python)
May 10 Javascript
小程序云开发获取不到数据库记录的解决方法
May 18 Javascript
Vue实现回到顶部和底部动画效果
Jul 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
德劲1103二次变频版的打磨
2021/03/02 无线电
PHP的面试题集
2006/11/19 PHP
PHP5+UTF8多文件上传类
2008/10/17 PHP
PHP排序算法的复习和总结
2012/02/15 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
python实现文件分组复制到不同目录的例子
2014/06/04 Python
python基础教程之面向对象的一些概念
2014/08/29 Python
Python实现通讯录功能
2018/02/22 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
计算机大学生的自我评价
2013/10/15 职场文书
电钳专业个人求职信
2014/01/04 职场文书
给酒店员工的表扬信
2014/01/11 职场文书
建材投资建议书
2014/05/16 职场文书
分公司任命书
2014/06/06 职场文书
同学聚会邀请函
2015/01/30 职场文书
单位推荐信范文
2015/03/27 职场文书
房地产项目合作意向书
2015/05/08 职场文书
刑事附带民事代理词
2015/05/25 职场文书
工作收入证明模板
2015/06/12 职场文书
小学语文国培研修日志
2015/11/13 职场文书
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python