Вопрос проверяет понимание замыканий и областей видимости.
Инкрементирующую функцию можно сделать через замыкание, сохранив переменную во внешней функции. Внутренняя функция будет иметь доступ к этой переменной и изменять её при каждом вызове. Значение будет сохраняться между вызовами. Это один из классических примеров использования замыканий.
Замыкания позволяют функции запоминать переменные из внешней области видимости.
Определение: Closure — функция, которая имеет доступ к переменным из внешнего scope даже после завершения выполнения внешней функции.
Пример:
function createCounter() {
let count = 0;
return function () {
count++;
return count;
};
}
const counter = createCounter();
counter(); // 1
counter(); // 2
Внутренняя функция хранит ссылку на переменную count.
Контекст не уничтожается, пока существует ссылка.
Значение сохраняется между вызовами.
Счётчики.
Кэширование.
Инкапсуляция состояния.
Вывод: замыкание позволяет хранить состояние внутри функции без глобальных переменных и без передачи параметров.