【发布时间】:2010-10-18 15:46:08
【问题描述】:
我的问题实际上是一种理解——我有一个可行的解决方案,但我只是不明白它是如何工作的。
好的,所以 - 我要做的是在循环中添加一个 setTimeout,并通过它传递一个变化的值。示例:
for (i=0;i<11;i++)
{
setTimeout("alert(i)",1000);
}
如果我理解正确,这不起作用,因为 Javascript 不会(如 PHP)将 i 的值传递给函数,而是传递 i 的引用——这又不是静态的,而是随着计数器继续变化。
我找到了一个解决方案,如下所示:
for (i=0;i<11;i++)
{
setTimeout(function(x){return function(){alert(x)};}(i),1000);
}
我真的不明白这实际上是做什么的。看起来它将“警报”函数传递回调用函数,但我无法理解。
我可以使用此解决方案并使其适应其他环境,但我真的很想了解我的所有代码,而不仅仅是使用我在某处找到的东西并且很高兴它可以工作。此外,我正在寻找更纤薄的版本来实现相同的目标。
谢谢,马可
【问题讨论】:
-
+1 表示“我真的很想了解我的所有代码,而不仅仅是使用我在某处找到的东西并且很高兴它可以工作”
标签: javascript variables scope