2620. Counter (Простой счетчик вызовов)
Given an integer n, return a counter function. This counter function initially returns n and then returns 1 more than the previous value every subsequent time it is called (n, n + 1, n + 2, etc).
/**
 * @param {number} n
 * @return {Function} counter
 */
var createCounter = function(n) {
    return function() {
        
    };
};

/** 
 * const counter = createCounter(10)
 * counter() // 10
 * counter() // 11
 * counter() // 12
 */
Решение
var createCounter = function(n) {
    let count = n || 0;
    return function() {        
        return count++;
    };
};
[TBD] Это решение использует функцию замыкания JavaScript для реализации функциональности счетчика. Замыкание позволяет функции получать доступ к переменным из контекста ее создания. В этом примере функция createCounter() создает переменную с именем count и инициализирует ее значением initialValue. Затем она возвращает новую функцию, которая использует переменную count для вычисления и возврата значения счетчика.

Когда функция makeCounter() вызывается в первый раз, параметр initialValue будет установлен в 0. Следовательно, значение переменной count будет равно -1. Когда вызывается функция, возвращаемая функцией makeCounter(), она увеличит значение переменной count и вернет его в качестве возвращаемого значения. Следовательно, функция, возвращаемая первым вызовом, вернет 0.

Во всех последующих вызовах параметр initialValue будет игнорироваться, а значение переменной count будет унаследовано из возвращаемого значения предыдущего вызова. Таким образом, каждый вызов возвращаемой функции будет возвращать значение, которое на 1 больше значения, возвращаемого предыдущим вызовом.