문제

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).

 

예제

처음 counter() 함수를 호출하게 되면 n을 반환한다. 이후부터는 이전에 반환했던 값보다 1만큼 큰 값을 반환한다.

 

위 예제의 경우 처음에 -2를 반환하고, 그 뒤론 각각의 호출마다 1씩 증가한 값을 반환한다.

 

 

코드

/**
 * @param {number} n
 * @return {Function} counter
 */
var createCounter = function(n) {
    let cnt = n;
    return function() {
        return cnt++;
    };
};

/** 
 * const counter = createCounter(10)
 * counter() // 10
 * counter() // 11
 * counter() // 12
 */

cnt라는 변수를 n으로 초기화한 후, 클로저를 이용하여 매 호출마다 cnt를 반환한 뒤 1만큼 증가시킨다.

+ Recent posts