PassFront
  1. PassFront
  2. База знаний
  3. Функции

Зачем нужно замыкание?

Функции

Замыкание нужно, чтобы сохранять состояние между вызовами, инкапсулировать приватные данные и фиксировать контекст в колбэках. Это одна из фундаментальных возможностей JavaScript.

Зачем нужно замыкание

1. Приватные данные

Переменные во внешней функции недоступны снаружи — эмуляция приватности:

function createCounter() {
  let count = 0; // приватная
  return {
    inc: () => ++count,
    get: () => count,
  };
}
const c = createCounter();
c.inc();
c.count; // undefined — напрямую не достать

2. Сохранение состояния между вызовами

Мемоизация, счётчики, кеши хранят данные в замыкании.

3. Фабрики функций и каррирование

const multiplier = (factor) => (n) => n * factor;
const double = multiplier(2);
double(5); // 10

4. Колбэки и обработчики

Замыкание сохраняет нужные данные для отложенного вызова (обработчики событий, setTimeout, промисы).

Где встречается на практике

  • Хуки React (обработчики и эффекты замыкают значения state своего рендера; само состояние React хранит во fiber компонента).
  • Мемоизация и debounce/throttle.
  • Модульный паттерн (приватность).

Коротко для собеседования

Замыкание нужно для: приватных данных (инкапсуляция), сохранения состояния между вызовами (счётчики, мемоизация), фабрик функций/каррирования и фиксации данных в колбэках. Лежит в основе хуков React, debounce и модульного паттерна.

Другие вопросы раздела