教你如何使用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创建优美的页面滑动块效果 - Glider.js
Sep 27 Javascript
详解Document.Cookie
Dec 25 Javascript
JavaScript+html5 canvas绘制的小人效果
Jan 27 Javascript
使用JQuery实现智能表单验证功能
Mar 08 Javascript
网络传输协议(http协议)
Nov 18 Javascript
JavaScript动态绑定详解
Sep 14 Javascript
微信小程序自定义组件实现tabs选项卡功能
Jul 14 Javascript
Vue导出页面为PDF格式的实现思路
Jul 31 Javascript
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
vuex 中插件的编写案例解析
Jun 10 Javascript
vue ajax 拦截原理与实现方法示例
Nov 29 Javascript
微信小程序自定义支持图片的弹窗
Dec 21 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
php表单敏感字符过滤类
2014/12/08 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
PHP asXML()函数讲解
2019/02/03 PHP
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
node.js调用C++开发的模块实例
2015/07/03 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
JS判断两个数组或对象是否相同的方法示例
2019/02/28 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
python基础教程之元组操作使用详解
2014/03/25 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
会计专业自我鉴定范文
2013/10/06 职场文书
技术经理的自我评价范文
2013/12/03 职场文书
应届护士求职信范文
2014/01/26 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
2015年三好一满意工作总结
2015/07/24 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
Vue全家桶入门基础教程
2021/05/14 Vue.js
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL