Создание замыкания без вложения функции

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

Условие

Необходимо написать замыкание, при этом не использовать прямое вложение одной функции в другую при его определении.

// TODO: реализовать замыкание без прямого вложения функции в функцию

Ответ

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

let read;
{
  let value = 42;
  read = () => value;
  value = 43;
}
// read() → 43

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее