> Может ли быть несколько экземпляров лексического окружения замыкания в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Кэтрид Диджитал
Стек: JavaScript
> Пример ответа
Да, может. Каждый вызов функции, создающей замыкание, порождает новый, независимый экземпляр лексического окружения.
Например:
JAVASCRIPTfunction createCounter() {let count = 0; // Лексическое окружение для каждого вызова - своёreturn function() {count++;return count;};}const counter1 = createCounter(); // Создаётся окружение №1 (count = 0)const counter2 = createCounter(); // Создаётся окружение №2 (count = 0)console.log(counter1()); // 1 (окружение №1)console.log(counter1()); // 2 (окружение №1)console.log(counter2()); // 1 (окружение №2)
Каждое замыкание (counter1 и counter2) "запоминает" своё собственное лексическое окружение, созданное при вызове createCounter. Они не пересекаются и существуют независимо, пока на них есть ссылки.
> Похожие задачи по frontend
Как улучшить реализацию EventEmitter с использованием Map и Set в JavaScript
Как реализовать хранение нескольких колбэков для одного события в EventEmitter
Какая польза от внутренней функции, используемой снаружи внешней функции в JavaScript
Всегда ли замыкание в JavaScript хранит один и тот же экземпляр внешних данных
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью