2014-05-20 65 views
4

一個匿名函數閉我有一個附加到Chrome的事件偵聽器的匿名函數,我該怎麼檢查它的關閉的價值?我怎麼能檢查在Chrome

例如:

(function(){ 
    var i = 0; 
    document.body.onclick = function() { 
    i += 1; 
    }; 
})(); 

我如何找到我的當前值?

+0

你可以試一下你的閉包裏面有一個調試器,這樣你就可以知道我在那個特定的執行點上的值 – Zagen

+0

是的,但是運行代碼並不總是很方便,所以你可以得到一個執行堆棧跟蹤包括關閉。 –

回答

4

不幸的是,如果你只是嘗試在Chrome的控制檯來看看它在這個例子中,你不會找到很容易地看到,你剛纔得到的函數體:

> document.body.onclick 
function() { 
    i += 1; 
} 

而且看在document.body獨自給你一個DOM樹檢查器,而不是一個Javascript對象視圖。

所以做到這一點:

a = { f: document.body.onclick } 

,你會得到在控制檯中的對象輸出線,有三角形,您可以打開,然後打開f場,你會看到一個<function scope>你可以打開,最後透露你可以打開一個Closure

對於不同註冊的事件監聽器或其他方式的功能可以流連(定時器等),也可以是具有挑戰性的找到那個讓你做這個函數的引用。在Chrome中,如果使用addEventListener,則可以使用名爲getEventListeners(element)的控制檯函數。