我的問題其實是理解之一 - 我有一個工作解決方案,我只是不明白它是如何工作的。變量全局範圍理解問題
好吧,我正在做的是在循環中添加一個setTimeout,並通過它傳遞一個改變的值。例如:
for (i=0;i<11;i++)
{
setTimeout("alert(i)",1000);
}
如果我理解正確,這並不工作,因爲JavaScript不(例如PHP)通過我的給函數的值,但通過我的參考 - 這又不是靜態的,而是繼續與櫃檯一起改變。
我找到了解決辦法,這是這樣的:
for (i=0;i<11;i++)
{
setTimeout(function(x){return function(){alert(x)};}(i),1000);
}
我真的不明白這是什麼實際上做。它看起來像將「alert」函數傳遞給調用函數,但我無法理解這一點。
我可以使用此解決方案並將其適應於其他上下文,但我真的很想了解我的所有代碼,而不僅僅是使用我在某處找到的東西,並且樂於使用它。此外,我正在尋找更薄的版本來實現相同的目標。
感謝,馬可
+1「我真的很想了解我的所有代碼,不僅僅是使用我在某處找到的東西,而是爲它感到高興」 – 2010-10-18 15:56:39