Встречается на собеседованиях • сегодня

В чем причина работы замыкания

Замыкание работает благодаря тому, что функция сохраняет ссылку на свою внешнюю лексическую область видимости (LexicalEnvironment), даже после завершения выполнения внешней функции. Это позволяет функции "запоминать" переменные из родительской области.

Пример:

javascript
function outer() {
  let count = 0;
  return function inner() {
    count++;
    return count;
  };
}

const counter = outer();
console.log(counter()); // 1
console.log(counter()); // 2

Здесь inner сохраняет доступ к переменной count даже после завершения outer. Это возможно, потому что:

  1. Функции в JS имеют скрытое свойство [[Environment]], ссылающееся на родительскую область
  2. Сборщик мусора не удаляет переменные, на которые есть ссылки из замыканий
  3. Область видимости сохраняется до тех пор, пока существует хотя бы одна функция, ссылающаяся на неё
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы