Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: closure, lexical, scope

В какой момент формируется замыкание у функции?

Вопрос проверяет понимание работы областей видимости и механизма замыканий в JavaScript.

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

Замыкание формируется в момент создания функции, а не её вызова. Функция запоминает лексическое окружение, в котором была объявлена. Благодаря этому она имеет доступ к внешним переменным даже после завершения их выполнения. Это базовый механизм языка. Он широко используется в практике.

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

Замыкания — фундаментальный механизм JavaScript, связанный с лексической областью видимости.

Определение

Замыкание — это функция вместе с лексическим окружением, в котором она была создана.

Когда формируется замыкание

  1. Во время объявления функции
    В этот момент функция «запоминает» внешнюю область видимости.

  2. Независимо от места вызова
    Даже если функция вызывается в другом месте программы, она продолжает ссылаться на исходное окружение.

Пример

function createCounter() {
  let count = 0

  return function () {
    count++
    return count
  }
}

const counter = createCounter()
counter() // 1
counter() // 2

Здесь внутренняя функция сохраняет доступ к count, хотя createCounter уже завершила выполнение.

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

  • инкапсуляция состояния

  • фабрики функций

  • обработчики событий

  • мемоизация

Вывод

Замыкание формируется при создании функции и сохраняет связь с её лексическим окружением. Это позволяет функциям работать с внешними данными даже после завершения внешнего контекста.

Уровень

  • Рейтинг:

    5

  • Сложность:

    8

Навыки

  • JavaScript

    JavaScript

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

#closure

#lexical

#scope

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