Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: let, block

Как добиться корректного вывода значений в асинхронном цикле?

Вопрос проверяет умение корректно работать с асинхронным кодом и областями видимости в циклах.

Короткий ответ

Самый простой способ — использовать let вместо var, так как let создаёт новую переменную для каждой итерации цикла. Также можно использовать IIFE или передавать значение в функцию явно. Эти подходы позволяют каждому асинхронному колбэку работать со “своим” значением. В современном коде предпочтителен let.

Длинный ответ

Решение всегда сводится к одному: создать отдельную область видимости для каждой итерации.

1) Использование let (рекомендуемый способ)

for (let i = 0; i < 3; i++) {
  setTimeout(() => {
    console.log(i);
  }, 100);
}

Почему работает:

  • let имеет блочную область видимости

  • на каждой итерации создаётся новая переменная i

2) Использование IIFE (устаревающий, но показательный подход)

for (var i = 0; i < 3; i++) {
  (function (value) {
    setTimeout(() => {
      console.log(value);
    }, 100);
  })(i);
}

Здесь:

  • значение i копируется в параметр value

  • каждый колбэк замыкается на своё значение

3) Передача значения в асинхронную функцию

function logLater(value) {
  setTimeout(() => console.log(value), 100);
}

for (var i = 0; i < 3; i++) {
  logLater(i);
}

Практическая рекомендация

  • Используй let по умолчанию

  • var оставляй только для legacy-кода

  • понимание IIFE важно для чтения старых проектов

Вывод: корректный вывод в асинхронном цикле достигается созданием отдельной области видимости для каждой итерации, чаще всего с помощью let.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#let

#block

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию