教你如何使用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 09 Javascript
浅谈JavaScript字符集
May 22 Javascript
js调试系列 初识控制台
Jun 18 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
Mar 31 Javascript
jQuery判断多个input file 都不能为空的例子
Jun 23 Javascript
javascript中Array()数组函数详解
Aug 23 Javascript
Yarn的安装与使用详细介绍
Oct 25 Javascript
Jil,高效的json序列化和反序列化库
Feb 15 Javascript
vue element upload组件 file-list的动态绑定实现
Oct 11 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
Jun 12 Javascript
基于原生JS封装的Modal对话框插件的示例代码
Sep 09 Javascript
Ajax获取node服务器数据的完整步骤
Sep 20 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读取XML值的代码(推荐)
2011/01/01 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
JavaScript 参考教程
2006/12/29 Javascript
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
详解React 条件渲染
2020/07/08 Javascript
Python实现模拟时钟代码推荐
2015/11/08 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
Python函数参数操作详解
2018/08/03 Python
Python中is和==的区别详解
2018/11/15 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
python实现自动化上线脚本的示例
2019/07/01 Python
python实现银行实战系统
2020/02/26 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
python中列表的含义及用法
2020/05/26 Python
python对一个数向上取整的实例方法
2020/06/18 Python
树莓派升级python的具体步骤
2020/07/05 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
简历自我评价怎么写好呢?
2014/01/04 职场文书
十佳大学生事迹材料
2014/01/29 职场文书
建党伟业观后感
2015/06/01 职场文书
跳高加油稿
2015/07/21 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS