Я пытаюсь установить задержку для цикла в JavaScript. Я хочу, чтобы войти i
, имеют задержку, а затем войти i
, и так далее. Мой вопрос, почему следующий код работы, имеющий функцию, возвращающую функцию можно увидеть ниже:SetTimeout внутри для цикла
for (var i = 1; i <= 5; i++) {
var tick = function(i) {
return function() {
console.log(i);
}
};
setTimeout(tick(i), 500 * i);
}
И следующий код не работает, как ожидалось:
for (var i = 1; i <= 5; i++) {
var tick = function(i) {
return console.log(i);
};
setTimeout(tick(i), 500 * i);
}
Он печатает все значения в цикле for за один раз. Может кто-нибудь объяснить, почему это происходит?
первого аргумент SetTimeout должен быть функцией, не является результат не вызов функции, если, как в елях т случай, результат вызова функции является сам –
переключатель 'функция var' в' let' – Endless
@Endless - никакой разницы, как второй пример кода будет пытаться вызвать 'undefined' после тайм-аута –