我有一个这样的代码,我试图给某个按钮添加一个事件处理程序。我想用全局变量&存储它的当前值回调关闭&不是它的参考。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