Замыкание можно создать в блочной области: вложенная функция не обязана находиться внутри другой функции, достаточно доступа к внешней лексической переменной.
Создание замыкания без вложения функции
Замыкание можно создать в блочной области: вложенная функция не обязана находиться внутри другой функции, достаточно доступа к внешней лексической переменной.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо написать замыкание, при этом не использовать прямое вложение одной функции в другую при его определении.
// TODO: реализовать замыкание без прямого вложения функции в функцию
Ответ
Замыкание можно создать в блочной области: вложенная функция не обязана находиться внутри другой функции, достаточно доступа к внешней лексической переменной.
let read;
{
let value = 42;
read = () => value;
value = 43;
}
// read() → 43
После выхода из блока value недоступна по имени снаружи, но функция продолжает иметь к ней доступ. Это показывает, что замыкается привязка переменной, а не только её значение в момент создания функции.