Внешняя функция создаёт скрытую переменную, а возвращённая вложенная функция сохраняет к ней доступ. Каждый вызов фабрики получает собственное окружение.
Пример замыкания с доступом к скрытой переменной
Внешняя функция создаёт скрытую переменную, а возвращённая вложенная функция сохраняет к ней доступ. Каждый вызов фабрики получает собственное окружение.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Сформулируйте пример использования замыкания, где вложенная функция может обращаться к переменной, объявленной во внешней функции.
// TODO: реализовать замыкание
Ответ
Внешняя функция создаёт скрытую переменную, а возвращённая вложенная функция сохраняет к ней доступ. Каждый вызов фабрики получает собственное окружение.
function createSecretReader(secret) {
return function () { return secret; };
}
const read = createSecretReader('скрытое значение');
console.log(read()); // скрытое значение
После завершения createSecretReader переменная secret остаётся доступной функции read через лексическое окружение. Напрямую обратиться к этой локальной переменной извне нельзя. Замыкание не является шифрованием или защитой секрета от владельца среды исполнения: это механизм области видимости и сохранения состояния.