Я пытаюсь использовать 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] будут вне контекста. Как передать строки [i] в эту анонимную функцию без eval или globals?