教你如何使用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 blockUI 遮罩不能消失与不能提交的解决方法
Sep 17 Javascript
js自动闭合html标签(自动补全html标记)
Oct 04 Javascript
浏览器加载、渲染和解析过程黑箱简析
Nov 29 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
Nov 18 Javascript
jQuery实现简单倒计时功能的方法
Jul 04 Javascript
JavaScript 函数模式详解及示例
Sep 07 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
Oct 27 Javascript
ES6中Array.includes()函数的用法
Sep 20 Javascript
完美解决axios跨域请求出错的问题
Feb 05 Javascript
p5.js入门教程之图片加载
Mar 20 Javascript
vue实现微信分享功能
Nov 28 Javascript
node实现爬虫的几种简易方式
Aug 22 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
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
js对象的构造和继承实现代码
2010/12/05 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
深入Python函数编程的一些特性
2015/04/13 Python
浅谈python 线程池threadpool之实现
2017/11/17 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
python取均匀不重复的随机数方式
2019/11/27 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
巴西最大的家电和百货零售商:Casas Bahia
2016/11/22 全球购物
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
写好自荐信要注意的问题
2013/11/10 职场文书
初入社会应届生求职信
2013/11/18 职场文书
体育老师的教学自我评价分享
2013/11/19 职场文书
工程售后服务承诺书
2014/05/21 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
2016教师节感恩话语
2015/12/09 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
基于JavaScript实现年月日三级联动
2021/06/22 Javascript