Создайте функцию внутри области с нужной переменной и верните её. Замыкание сохраняет доступ к привязке, поэтому может видеть последующие присваивания.
Реализовать функцию с использованием замыкания
Создайте функцию внутри области с нужной переменной и верните её. Замыкание сохраняет доступ к привязке, поэтому может видеть последующие присваивания.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Напишите функцию, которая через замыкание сохраняет ссылку на переменную из внешнего контекста и позволяет получить её значение в любой момент позже.
// TODO: реализовать замыкание, аналогично generator или другим функциям выше
Ответ
Создайте функцию внутри области с нужной переменной и верните её. Замыкание сохраняет доступ к привязке, поэтому может видеть последующие присваивания.
function createCell(initial) {
let value = initial;
return {
get: () => value,
set: next => { value = next; }
};
}
const cell = createCell(1);
cell.set(2);
// cell.get() → 2
Здесь замкнута локальная переменная value, а не снимок её первоначального значения. Сам initial передаётся обычными правилами JavaScript; для объекта передаётся значение ссылки.