Tim*_*rks 5 javascript debugging closures google-chrome
我有一个匿名函数附加到Chrome中的事件监听器,我如何检查其闭包的值?
例如:
(function(){
var i = 0;
document.body.onclick = function() {
i += 1;
};
})();
Run Code Online (Sandbox Code Playgroud)
我怎样才能找到i的当前值?
不幸的是,如果你只是尝试在 Chrome 控制台中查看这个示例,你不会发现它很容易看到,你只会得到函数体:
> document.body.onclick
function () {
i += 1;
}
Run Code Online (Sandbox Code Playgroud)
单独查看 document.body 会给你一个 DOM 树检查器,而不是 Javascript 对象视图。
所以这样做:
a = { f: document.body.onclick }
Run Code Online (Sandbox Code Playgroud)
您将在控制台中看到一个对象输出线,其中有一个可以打开的显示三角形,然后打开该字段f
,您将看到一个<function scope>
您可以打开的图标,最后显示一个Closure
您可以打开的图标。
对于以不同方式注册的事件侦听器或函数可以挂起的其他方式(计时器等),找到允许您执行此操作的函数的引用可能具有挑战性。在 Chrome 中,如果使用了 addEventListener,则可以使用名为 getEventListeners(element) 的控制台函数。