Вопрос проверяет понимание механизма замыканий в JavaScript, который позволяет внутренней функции иметь доступ к переменным внешней функции даже после её завершения.
Замыкание (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, так как переменная не уничтожается сборщиком мусора.
Замыкания — мощный инструмент для инкапсуляции состояния и создания гибких функций. Их стоит применять, когда нужно сохранить данные между вызовами функции без использования глобальных переменных.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию