Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: generator, function, iterator, yield, state

Чем генераторы отличаются от обычных функций?

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

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

Генераторы — это функции, которые могут приостанавливать своё выполнение и возобновлять его позже, сохраняя состояние между вызовами. В отличие от обычных функций, они возвращают объект итератора с методом next(). Генераторы используют ключевое слово yield для возврата значения и приостановки, а обычные функции выполняются до конца и возвращают одно значение.

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

Основное отличие генераторов от обычных функций

Генераторы — это специальный тип функций в JavaScript, которые могут приостанавливать своё выполнение в любой точке и возобновлять его позже, сохраняя внутреннее состояние между вызовами. Обычные функции выполняются последовательно от начала до конца и возвращают одно значение (или undefined). Генераторы же возвращают объект-итератор, который позволяет управлять выполнением функции пошагово.

Ключевые особенности генераторов

  • Объявляются с помощью function* (со звёздочкой)
  • Используют yield для возврата значения и приостановки выполнения
  • Возвращают объект итератора с методами next(), return(), throw()
  • Сохраняют контекст выполнения между вызовами

Пример кода

// Обычная функция
function regularFunction() {
  return 'Hello';
  return 'World'; // Этот код никогда не выполнится
}

// Генератор
function* generatorFunction() {
  yield 'Hello';
  yield 'World';
  yield '!';
}

const gen = generatorFunction();
console.log(gen.next().value); // 'Hello'
console.log(gen.next().value); // 'World'
console.log(gen.next().value); // '!'
console.log(gen.next().done);  // true

Практическое применение

Генераторы полезны для создания последовательностей данных, реализации итераторов, управления асинхронными потоками (например, с помощью библиотек вроде co или в комбинации с async/await). Они позволяют лениво вычислять значения, что экономит память при работе с большими наборами данных.

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

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

#generator

#function

#iterator

#yield

#state

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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