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).
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.
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.
/**
* @param {number} n
* @return {Function} counter
*/
var createCounter = function(n) {
return function() {
return n++
};
};
/**
* const counter = createCounter(10)
* counter() // 10
* counter() // 11
* counter() // 12
*/
The provided code defines a function `createCounter` that takes an integer `n` as an argument and returns another function. This returned function acts as a counter that starts at `n` and increments by 1 each time it's called.
Let's break down the code and provide an explanation:
var createCounter = function(n) {
return function() {
return n++;
};
};
1. `createCounter` is a function that takes an integer `n` as its parameter.
2. Inside `createCounter`, it returns another function (an anonymous function) that captures the value of `n`.
3. This inner function has no parameters and when called, it returns the current value of `n` and then increments `n` by 1 using the `n++` expression.