和我一样,对于自学过javascript,没有学过其他语言经验的人来说,javascript的调试在一开始也是一个很大的难点,很多基础的东西都需要自己去探索,非常压抑。
想到机会,我再用firebug演示一下上面关闭的博文的图片,算是一点调试经验的分享。
示例代码如下:
复制代码如下: function fn(){ var max=10;返回功能栏(x){ if(x max){ console . log(x);}}}var fl=fn(),max=100fl(15);
选择firebug——脚本。
右侧的监视器栏可以包括窗口对象和变量max、fl和fn。
同时,还可以看到窗口的属性。以location为例,可以直接在“控制台”中运行window.location的输出,进一步在window.location.href中输出location的href属性值当然,一般在引用window对象的属性和方法时,不需要“window.xxx”的形式,而是直接使用“xxx”。
言归正传,
回到“脚本”一栏,调试javascript,通过播放“断点”查看变量值。
首先要理解几个概念:断点、单步进入、单步跳过、单步退出。这里不描述。
这次主要采用设置断点和单步进入的方式。
可以点击在左线标记处设置断点,右键点击断点进行常规判断。
您可以设置多个断点,并且可以在“断点”列中删除设置的断点。
在这里,只需在脚本标签的开头中断点并刷新页面。
此刻
1.右侧监视区域中的原始窗口对象变成这个,并指向该窗口。在控制台中输出this.location,您将获得与location相同的结果。
2.全局变量max和fl初始化为undefined。
3.fn()是一个函数声明,因为解析器将首先读取函数声明,并在执行任何代码之前使其可用(可访问)。
点击右上角的“进入”按钮。
逐一执行代码,并检查这一点、每个变量的值变化以及监控区域中的堆栈。可以和推荐的博客交叉引用。
这个代码的另一个例子如下:
复制的代码如下:var name=' The Windowvar obj={ name: 'The local ',getNameFunc:函数(){ console . log(this . name);return function(){ console . log(this . name);};}};var c=obj . GetNameFunc();c();
仍然是“单步执行”,可以看到在执行c()代码时,它进入getNameFunc,这从指向窗口对象变为obj,控制台输出“The local”。
分步执行可以清晰的看到整个代码的运行逻辑。
以上是通过使用Firebug的调试功能来理解javascript闭包和这个的方法的总结。希望大家都能喜欢。