Introduction
A closure lets a function remember the variables from the place where it was created, even if it runs somewhere else later.
A closure lets a function remember the variables from the place where it was created, even if it runs somewhere else later.
function outer() { let secret = 'hidden'; function inner() { console.log(secret); } return inner; }
function makeCounter() { let count = 0; return function() { count += 1; return count; }; } const counter = makeCounter(); console.log(counter()); // 1 console.log(counter()); // 2
function greet(name) { return function(message) { console.log(`${message}, ${name}!`); }; } const greetAlice = greet('Alice'); greetAlice('Hello'); // Hello, Alice!
This program creates a function that adds 5 to any number given. The inner function remembers the value 5 from the outer function.
function createAdder(x) { return function(y) { return x + y; }; } const addFive = createAdder(5); console.log(addFive(10)); console.log(addFive(3));
Closures keep variables alive even after the outer function ends.
Be careful not to create memory leaks by holding onto large data unintentionally.
Closures let functions remember variables from where they were created.
They are useful for data privacy and creating flexible functions.
Closures happen automatically when inner functions use outer variables.
function makeCounter() {
let count = 0;
return function() {
count += 1;
return count;
};
}
const counter = makeCounter();
console.log(counter());
console.log(counter());function createFuncs() {
let funcs = [];
for (var i = 0; i < 3; i++) {
funcs.push(function() { return i; });
}
return funcs;
}
const functions = createFuncs();
console.log(functions[0]());
console.log(functions[1]());i? function createFuncs() {
let funcs = [];
for (var i = 0; i < 3; i++) {
funcs.push(function() { return i; });
}
return funcs;
}var to let in the for loop declaration -> Option BPass the test and this pattern moves unknown