33
loading...
This website collects cookies to deliver better user experience
The combination of a function bundled together (enclosed) with references to its surrounding state (the lexical environment). In other words, a closure gives you access to an outer function’s scope from an inner function. In JavaScript, closures are created every time a function is created, at function creation time.
function outer() {
let name = "Amr";
function inner() {
console.log(name);
}
inner();
}
outer();
outer
and inside of it we declared two things:function outer() {
let name = "Amr";
function inner() {
console.log(name);
}
return inner;
}
let innerFunc = outer();
innerFunc();
let counter = 0;
function incrementCounter() {
counter++;
}
function counterClosure() {
let counter = 0;
function increment() {
counter++;
}
return increment;
}
let increment = counterClosure();
increment();
function counterClosure() {
let counter = 0;
function increment() {
counter++;
}
function getCounter() {
return counter;
}
return {
increment: increment,
getCounter: getCounter,
};
}
let { getCounter, increment } = counterClosure();
increment();
console.log(getCounter()); // 1
function elementCreator(open, close) {
return function (content) {
return `${open} ${content} ${close}`;
};
}
const br = elementCreator("<div>", "</div>");
const header = elementCreator("<header>", "</header>");
const headerContent = header("Hello this is a header");
console.log(headerContent); // <header> Hello this is a header</header>
const divWithHeader = header(div("hello div"));
// <header> <div> hello div </div> </header>