Your destination for complete Tech news

What is closure in Javascript?

602 0
2 min read

In JavaScript, a closure is a function that has access to the variables and parameters of its outer function, even after the outer function has returned. Closures are created when a function is defined inside another function, and they allow the inner function to retain its access to the variables and parameters of the outer function even after the outer function has finished executing.

Here is an example of a closure in JavaScript:

function outerFunction(x) {
  return function innerFunction() {

let inner = outerFunction(5);

inner();  // outputs 5

In this example, the innerFunction is defined inside the outerFunction, and it has access to the x parameter of the outerFunction. When the innerFunction is returned from the outerFunction, it retains its access to the x parameter, even though the outerFunction has already finished executing.

Closures are often used to create private variables in JavaScript. For example:

function createCounter() {
  let count = 0;
  return function increment() {

let counter = createCounter();

counter();  // outputs 1
counter();  // outputs 2
counter();  // outputs 3

In this example, the increment function is defined inside the createCounter function and has access to the count variable. The count variable is effectively private to the increment function, because it cannot be accessed from outside the createCounter function.

Closures are an important concept in JavaScript, and they are widely used in various contexts, such as asynchronous programming, object-oriented programming, and functional programming. They allow you to create functions that have a specific scope and to maintain state and context between function calls.

It is important to be aware of the scope and lifetime of closures, and to properly manage the variables and resources that they access. Closures can sometimes cause problems if they retain references to variables that are no longer needed or if they are not properly garbage collected.

Leave A Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.