@maratt

Почему я получаю такой результат?

for (var i=1; i<=5; i++) {
	setTimeout( ((i) => {
		return console.log( i );
	})(i), 1000 );
}

Почему я здесь получаю 1 2 3 4 5 0?
Откуда 0?
И почему всё выводится без задержки?
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
И почему всё выводится без задержки?

потому что у вас ((i) => { return console.log( i ); })(i) самовызывающаяся функция, которая выполняется сразу. сделайте вместо нее ()=>{ return console.log( i ); }

а весь пример сделайте так:
for (let i=1; i<=5; i++) {
  setTimeout( () => {
    return console.log( i );
  }, 1000 );
}


Обратите внимание на let вместо var в объявлении цикла
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы