2012-07-07 83 views
0
  1. 的问题是,为什么调试到一个函数,我们怎么知道,封闭的内容该功能是指什么?如何调试JavaScript关闭?

    我知道,谷歌Chrome浏览器将显示在“范围变量”部分,封闭但其他浏览器是什么? (更新:FF有类似的事情,但不把它称为“关闭”,但就像局部变量)

  2. 动机的第一个问题实际上是沿着一边看<学习jQuery的到来,第三版> - 附录A.

    在355页上,作者说下面的代码段将导致内存泄漏在IE由于环路参考(点击处理程序指的是具有DOM按钮的闭合含量)。

    我只是好奇它是否是这种情况通过调试到单击处理程序关闭content.However谷歌浏览器不显示任何闭包变量。

    因此我不知道作者是如何知道循环引用问题..


$(document).ready(function() { 
    var button = document.getElementById('button-1'); 
    button.onclick = function() { 
    $.print('hello'); 
    return false; 
    }; 
}); 

谢谢。

+0

就笔者所知,因为(在这种情况下),这是显而易见的:变量“按钮”是指一个DOM节点,它的“点击”属性设置为一个函数,该函数在其范围内的变量。 – Pointy 2012-07-07 13:39:06

+0

等待,只有当处理程序实际引用按钮时,这不是一个问题吗?这是正确的例子吗? – 2012-07-07 15:40:48

+0

@Pointy我的观点实际上就是'onclick'处理函数没有引用变量'button'。因此,变量'button'如何关闭该函数?否则,我是以一种非常不正确的方式思考? – Simon 2012-07-09 05:06:31

回答

1

我要提到你使用Firebug调试代码。它是最好的插件可用与没有问题的确切答案,但你可能想看看这些链接。

Tools for debugging memory leaks in JavaScript

how to trace or debug javascript closures in firebug

Debugging closures in javascript

你甚至可以检查出YouTube链接,以获取更多信息。

希望我试过回答一些有用的东西。

+0

这个问题非常具体。这个答案太泛泛。请添加更多详细信息。 – 2012-07-07 13:47:56

+0

@RobW我用几个链接编辑了我的答案。希望这能让你满意。尽管他们并不是我假设的完美答案。 :) – 2012-07-07 19:48:37

+0

@RobW第一个链接为我提供了我所知道的最佳解决方案之一。它完美地回答了这个问题,但是会给出一个很好的见解。 – 2012-07-07 20:00:25