考慮以下代碼:價值嵌套函數變量的評價在定義時,而不是在calltime
for(var i = 1; i <= 2; ++i)
{
$('#id' + i).click(
function()
{
alert('ID = ' + i);
}
)
}
的問題是,當ID1或ID2點擊警報總是說,ID = 3。現在我知道爲什麼發生這種情況(它在通話時進行評估),我只是好奇,如果有什麼方法來防止這種情況發生? (1)
這裏的很多問題和一般性文章都很好地解釋了關閉的概念,但是我一直無法找到任何技術來避免它。
在一個側面說明,我試圖用(注意額外的關鍵詞「新」):
new function() { alert('ID = ' + i) }
但是直接在它被定義的時候調用警報並執行上點擊事件罷了。對此有何想法? (2)
參見:http://stackoverflow.com/questions/1451009/javascript-infamous-循環問題 – bfavaretto