我有一個這樣的代碼,我試圖給某個按鈕添加一個事件處理程序。我想用全局變量&存儲它的當前值回調關閉&不是它的參考。JavaScript中的閉包
var globalNum="dummy";
function A()
{
$("#button").click(function()
{
$("#button").append(globalNum);
});
}
globalNum="dummyAgain";
現在,如果單擊事件被解僱,將會添加什麼 - 「dummy」或「dummyAgain」? 我相信這將是「dummyAgain」因爲關閉全局變量的引用被存儲。我想要綁定的價值。 我知道我可以在A中創建一個局部變量,我可以使用全局變量&進行初始化,但是還有其他更酷的方法嗎?
感謝
+1答案。應該指出,@Felix_Kling使用'bind()',而且在更新'globalNum'之前調用'A()'。這與刪除'A()'函數包裝並直接執行內容是等價的。 – Andrew 2010-07-03 07:36:20
謝謝。 但我不想創建本地數據 - 至少顯式。否則,我可以簡單地在A的body中定義localNum = globalNum,並在回調函數關閉中添加localNum。 不是說創建本地數據有一些問題,我只是在尋找更酷的東西:) – 2010-07-03 07:41:24
然後用@Felix Kling的答案做一個小改動。將'function A()'改爲'function A(globalParam)',並在最後用'})(globalParam)調用它;'請注意函數內部的'globalParam'與外部'globalParam'不同。 – Andrew 2010-07-03 07:47:00