Функция add сохраняет доступ к лексическому окружению вызова make, включая prefix. Такое сочетание функции и доступного ей окружения называют замыканием.
Является ли возвращаемая функция замыканием
Функция add сохраняет доступ к лексическому окружению вызова make, включая prefix. Такое сочетание функции и доступного ей окружения называют замыканием.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Разберите function make(prefix){ return value => prefix + value; } const add = make('id:');. Почему add('7') работает после завершения make?
Ответ
Функция add сохраняет доступ к лексическому окружению вызова make, включая prefix. Такое сочетание функции и доступного ей окружения называют замыканием.
Завершение внешнего вызова не уничтожает значения, которые ещё нужны достижимой внутренней функции. Другой вызов make создаст независимое окружение. Замыкание не обязательно требует возврата функции: callback тоже может читать внешние переменные. Важно отличать сохранённую привязку переменной от неизменяемой копии её значения.