教你如何使用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用图作提交按钮或超连接
Mar 26 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 Javascript
javascript延时加载之defer测试
Dec 28 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
Dec 16 Javascript
JavaScript实现页面定时刷新(定时器,meta)
Oct 12 Javascript
前端面试知识点锦集(JavaScript篇)
Dec 28 Javascript
使用vue构建移动应用实战代码
Aug 02 Javascript
JS+canvas动态绘制饼图的方法示例
Sep 12 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
Sep 22 Javascript
基于JavaScript实现报警器提示音效果
Oct 27 Javascript
json数据格式常见操作示例
Jun 13 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 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
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
php图片裁剪函数
2018/10/31 PHP
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
js单例模式详解实例
2013/11/21 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
拖动时防止选中
2017/02/03 Javascript
js中的闭包学习心得
2018/02/06 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
Python+微信接口实现运维报警
2016/08/27 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
Django 多对多字段的更新和插入数据实例
2020/03/31 Python
Pycharm调试程序技巧小结
2020/08/08 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
计算机专业个人求职自荐信
2013/09/21 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
初中生评语大全
2014/04/24 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
机电专业求职信
2014/06/14 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
北京青年观后感
2015/06/15 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python