2620. Counter
Tags
- Closures
Link
Question
Given an integer
n
, return acounter
function. This counter function initially returnsn
and then returns 1 more than the previous value every subsequent time it is called (n
,n + 1
,n + 2
, etc).
Example 1:
Input:
n = 10
["call","call","call"]
Output: [10,11,12]
Explanation:
counter() = 10 // The first time counter() is called, it returns n.
counter() = 11 // Returns 1 more than the previous time.
counter() = 12 // Returns 1 more than the previous time.
Example 2:
Input:
n = -2
["call","call","call","call","call"]
Output: [-2,-1,0,1,2]
Explanation: counter() initially returns -2. Then increases after each sebsequent call.
Constraints:
-1000 <= n <= 1000
0 <= calls.length <= 1000
calls[i] === "call"
Answer
JavaScript
/**
* @param {number} n
* @return {Function} counter
*/
var createCounter = function (n) {
return function () {
return n++;
};
};
const counter = createCounter(10);
/**
* const counter = createCounter(10)
* counter() // 10
* counter() // 11
* counter() // 12
*/
/**
* @param {number} n
* @return {Function} counter
*/
var createCounter = function (n) {
counter = -1;
return function () {
counter = counter + 1;
return n + counter;
};
};
/**
* const counter = createCounter(10)
* counter() // 10
* counter() // 11
* counter() // 12
*/