将函数传递给循环中的setTimeout:总是最后一个值?
我正在尝试使用setTimeout来执行我传递信息的匿名函数,我遇到了麻烦。这个(硬编码版本)可以正常工作:
setTimeout(function(){alert("hello");},1000);setTimeout(function(){alert("world");},2000);
但是我试图从数组中取出hello和world并将它们传递给函数,而不是(a)使用全局变量,以及(2)使用eval。我知道如何使用全局或eval来做到这一点,但是如何在没有它的情况下做到这一点。这是我想做的(但我知道它不会起作用):
var strings = [ "hello", "world" ];var delay = 1000;for(var i=0;i<strings.length;i++) { setTimeout( function(){alert(strings[i]);}, delay); delay += 1000;}
当然,字符串[i]将脱离上下文。如何在没有eval或globals的情况下将字符串[i]传递给该匿名函数?
胡子哥哥
撒科打诨
三国纷争
相关分类