π What is Closure in JavaScript? ? Explained with Simple Examples
In JavaScript, a closure is created when a function "remembers" the variables from its outer scope even after the outer function has finished executing. This concept allows functions to access variables from an enclosing scope or function — even after that outer function has returned.
Closures are a powerful feature in JavaScript that enable data encapsulation, callback handling, and the creation of private variables.
π‘ Let's Understand with an Example
function outerFunction() {
let outerVariable = "I am from outer scope!";
function innerFunction() {
console.log(outerVariable); // Accessing variable from outer scope
}
return innerFunction;
}
const closureFunc = outerFunction();
closureFunc(); // Output: I am from outer scope!
π Explanation:
outerFunction
defines a variableouterVariable
.innerFunction
is declared insideouterFunction
and uses that variable.- Even after
outerFunction()
has finished executing,innerFunction()
can still accessouterVariable
. - This is closure in action.
π¦ Why Use Closures?
Closures are used to:
- ✅ Preserve Data between function calls.
- π Create private variables in JavaScript.
- π§ Maintain state in asynchronous operations (e.g.,
setTimeout
). - π― Implement factory functions that produce custom behavior.
π§ͺ Real-World Use Case: Counter Function
function createCounter() {
let count = 0;
return function() {
count++;
console.log(count);
};
}
const counter1 = createCounter();
counter1(); // 1
counter1(); // 2
const counter2 = createCounter();
counter2(); // 1
π Each counter
maintains its own separate copy of count
due to closures.
π§ Key Points to Remember
- A closure gives you access to an outer function’s variables even after the outer function has returned.
- Closures help emulate private variables in JavaScript.
- Closures are created every time a function is created, at function creation time.
π― Conclusion
Closures in JavaScript may seem tricky at first, but they are essential for writing modular, maintainable, and efficient code. Understanding closures will help you master more advanced concepts like callbacks, currying, and function factories.
π±️ Explore this powerful concept in your code today and see the magic of closures in action!
Comments
Post a Comment