Java script closures is very important topic for any JavaScript developer.
It is widely used in any JavaScript based framework.
Closures in JavaScript is an inner function in a outer function, which have access to its outer function scopes. Outer function encapsulating the data, privacy and organization using the closures.
A JavaScript closure is a pairing of:
- A function, and
- A reference to that function’s outer scope (lexical environment)
For Example:
let add = (function() {
let counter = 0;
return function() {
counter += 1;
return counter
}
})();
add(); // 1
add(); // 2
add(); // 3
In the above example outer function ‘add’ have initial counter variable. and its returning the incremented counter.
if you call add() first time its returning the 1 after increment.
Second time add() return 2 , third time add() return 3.
Here let counter = 0; is not resetting the variable again and again. as the scope is keeping the previous state of the variable counter.