教你如何使用firebug调试功能了解javascript闭包和this

作者:hebedich 时间:2024-04-22 13:09:34 

对于跟我一样,自学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'。

逐步执行可以非常清晰的看到整个代码的运行逻辑。

标签:javascript,闭包,this,firebug
0
投稿

猜你喜欢

  • asp如何创建一个PDF文件?

    2009-11-14 20:53:00
  • python 从文件夹抽取图片另存的方法

    2022-08-26 13:00:55
  • python concurrent.futures模块的使用测试

    2023-01-30 16:48:59
  • MYSQL日志的正确删除方法详解

    2024-01-22 13:18:02
  • 关于 SQL Server ErrorLog 错误日志说明

    2024-01-19 23:57:03
  • 利用Pytorch实现简单的线性回归算法

    2022-09-08 00:00:09
  • 用IE浏览器UTF-8页面是一片空白

    2009-06-14 19:55:00
  • Python中操作mysql的pymysql模块详解

    2024-01-14 08:14:32
  • python 基本数据类型占用内存空间大小的实例

    2021-08-10 21:59:03
  • M1芯片Mac上Anaconda的暂时替代(miniforge)

    2022-12-12 00:32:43
  • 利用windows任务计划实现oracle的定期备份

    2009-08-31 12:24:00
  • 详解如何在pyqt中通过OpenCV实现对窗口的透视变换

    2021-11-04 07:10:13
  • python字典排序浅析介绍

    2022-01-30 17:45:00
  • Asp中Server.ScriptTimeOut脚本超时属性需要注意的一点

    2008-10-18 14:53:00
  • 使用Python项目生成所有依赖包的清单方式

    2022-02-18 19:14:49
  • 通过实例解析python描述符原理作用

    2021-01-15 03:14:57
  • Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结

    2024-05-28 15:47:20
  • asp常用数据库连接方法和技巧

    2010-05-27 12:28:00
  • Python教程之基本运算符的使用(下)

    2021-04-29 20:32:37
  • 怎么样在网页上读取远程xml的数据

    2008-10-10 17:43:00
  • asp之家 网络编程 m.aspxhome.com