Замыкания🔒. Сложное - простыми словами
Представьте себе коробку📦. Внутри этой коробки находится переменная.
Замыкание🔒 — это ситуация, когда функция "помнит" переменные из своего лексического окружения (то есть, из того места в коде, где она была определена), даже после того, как это окружение перестало существовать💥.
Другими словами, функция "закрывает" в себе эти переменные.
Разберем на примерах: Простой счетчик
function createCounter() { let count = 0; // Переменная, "закрытая" в замыкании
return function() { count++; return count; }; }
let counter = createCounter(); console.log(counter()); // 1 console.log(counter()); // 2 console.log(counter()); // 3
Здесь createCounter — это функция, которая создает и возвращает другую функцию (анонимную). Внутренняя функция имеет доступ к переменной count, даже после того, как createCounter закончила свою работу. Каждый вызов возвращенной функции увеличивает count, демонстрируя, что эта переменная сохраняется внутри замыкания.
Итог: замыкания позволяют функциям "помнить" свое окружение, предоставляя мощный механизм для создания гибкого и функционального кода. Они являются основой для многих продвинутых паттернов в JavaScript, таких как карринг, частичное применение и создание приватных переменных.