Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Как внутренняя функция получает доступ к переменным внешней функции?

Вопрос проверяет понимание механизма замыканий в JavaScript, который позволяет внутренней функции иметь доступ к переменным внешней функции даже после её завершения.

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

Внутренняя функция получает доступ к переменным внешней функции через замыкание. Когда функция создаётся, она запоминает своё лексическое окружение, включая все переменные из внешних функций. Даже после завершения внешней функции, внутренняя функция сохраняет ссылку на это окружение и может обращаться к его переменным. Это возможно благодаря цепочке областей видимости (scope chain).

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

Что такое замыкание?

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

Как это работает?

Рассмотрим пример:

function outer() {
  let count = 0;
  function inner() {
    count++;
    return count;
  }
  return inner;
}
const counter = outer();
console.log(counter()); // 1
console.log(counter()); // 2

Здесь inner имеет доступ к переменной count из outer. Даже после того, как outer завершила выполнение, inner сохраняет ссылку на её окружение через замыкание. Каждый вызов counter увеличивает count, так как переменная не уничтожается сборщиком мусора.

Где применяется?

  • Создание приватных переменных (например, в модулях).
  • Функции обратного вызова (callbacks) и обработчики событий.
  • Каррирование и частичное применение функций.

Вывод

Замыкания — мощный инструмент для инкапсуляции состояния и создания гибких функций. Их стоит применять, когда нужно сохранить данные между вызовами функции без использования глобальных переменных.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

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

#closure

#lexical scope

#scope chain

#JavaScript

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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