Замкните изменяемую переменную со стартовым значением и возвращайте её после префиксного увеличения. Значение по умолчанию 0 даст первый результат 1.
Генератор счётчика с замыканием
Замкните изменяемую переменную со стартовым значением и возвращайте её после префиксного увеличения. Значение по умолчанию 0 даст первый результат 1.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Функция createCounter должна вести себя следующим образом: При вызове createCounter(start) она возвращает новую функцию. Эта возвращённая функция, каждый раз будучи вызваной, увеличивает внутреннее значение счётчика на 1 и отдаёт текущий результат. Начальное значение счётчика задаётся параметром start при вызове createCounter(start). Если параметр опущен, счётчик стартует с 0.
/*
Пример:
const counter = createCounter(5);
console.log(counter()); // Вывод: 6
console.log(counter()); // Вывод: 7
console.log(counter()); // Вывод: 8
*/
const anotherCounter = createCounter();
console.log(anotherCounter()); // Вывод: 1
console.log(anotherCounter()); // Вывод: 2
function createCounter(n) {}
Ответ
Замкните изменяемую переменную со стартовым значением и возвращайте её после префиксного увеличения. Значение по умолчанию 0 даст первый результат 1.
function createCounter(start = 0) {
let current = start;
return () => ++current;
}
const counter = createCounter(5);
counter(); // 6
counter(); // 7
Каждый вызов createCounter создаёт независимую область состояния. Префиксный ++ возвращает уже увеличенное значение; постфиксный вернул бы предыдущее и не совпал с примерами. Предполагается числовой start; параметр по умолчанию срабатывает при отсутствии аргумента или undefined.