Lesson 9 of 15
Closures
Closures
A closure is a function that remembers the variables from the scope where it was created, even after that scope has finished.
function makeCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter = makeCounter();
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3
Each call to counter() increments count. The inner function has a reference to count — it closes over it. This is a closure.
Function Factories
Closures let you create customized functions:
function makeMultiplier(factor) {
return n => n * factor;
}
const triple = makeMultiplier(3);
const quadruple = makeMultiplier(4);
console.log(triple(5)); // 15
console.log(quadruple(5)); // 20
Each returned function closes over its own factor.
Your Task
Write function makeAdder(x) that returns a new function. The returned function takes a number y and returns x + y.
const add5 = makeAdder(5);
console.log(add5(3)); // 8
console.log(add5(10)); // 15JavaScript loading...
Loading...
Click "Run" to execute your code.