【发布时间】:2011-02-22 05:55:57
【问题描述】:
我搜索了这个看似简单的问题,但找不到答案,所以...
假设我有一个需要设置回调的循环。我的回调函数如下所示:
function callback(var1) { // code }
现在我的循环是这样的:
for( //condition)
{
var x = something_different_each_time;
document.getElementById('foo').addEventListener('click', function() { callback(x); }, false);
}
现在看起来即使循环运行 n 次,匿名函数也只编译一次——因此每次调用回调都使用相同的参数调用(即使 x 在循环中每次都不同)。
我一定在这里遗漏了一些东西。非常感谢任何帮助! :)
【问题讨论】:
-
类似问题:stackoverflow.com/questions/1734749stackoverflow.com/questions/643542stackoverflow.com/questions/1582634stackoverflow.com/questions/1331769stackoverflow.com/questions/1552941stackoverflow.com/questions/750486stackoverflow.com/questions/933343stackoverflow.com/questions/1579978stackoverflow.com/questions/1413916
-
这是一个综合列表@CMS。最好用“闭包”和“循环”标记这些问题,这样它们都可以通过简单的搜索链接起来。
-
完成,所有问题都标记为“javascript”、“closures”和“loops”。这是链接 - stackoverflow.com/questions/tagged/javascript+closures+loops
-
@Anurag,干得好,非常感谢!
-
@Anurag,您开始重新标记时,我刚刚访问了 SO 主页,并以为我发现了某种聪明、邪恶的黑客,因为首页突然充满了几乎相同的不同问题海报。然后我注意到你被列为最后一个活跃的海报,并从你个人资料的“活动”选项卡中找到了我的方式。开我的玩笑,但一开始确实很可疑!
标签: javascript loops closures