Closure in JavaScript

In JavaScript, a closure is a combination of a function and the lexical environment within which that function was declared.

This environment consists of variables and values available at the time the closure was created. Closures allow a function to access and remember the scope in which it was created, even after that scope has finished executing.

Here's a simple example to illustrate closures:

function outerFunction() {
  // Outer function has a variable 'outerVar'
  let outerVar = 'I am from outerFunction';

  function innerFunction() {
    // Inner function can access 'outerVar'
    console.log(outerVar);
  }

  return innerFunction; // Return the inner function, creating a closure
}

const closureExample = outerFunction();

// Invoke the closure, which remembers the 'outerVar' from its lexical scope
closureExample(); // Output: 'I am from outerFunction'
        

In this example, innerFunction is defined inside outerFunction, and it has access to the outerVar variable. When outerFunction is invoked, it returns innerFunction, creating a closure. The closure retains access to the outerVar variable even though outerFunction has finished executing.

Closures are powerful because they provide a way to create private variables, maintain state, and encapsulate functionality. They are commonly used in scenarios like creating factory functions, managing private data, and implementing callback functions.

要查看或添加评论,请登录

Asad Khan的更多文章

  • Next.js 15 has FINALLY arrived!

    Next.js 15 has FINALLY arrived!

    Next.js 15 is now officially stable and ready for production! This release incorporates enhancements from both RC1 and…

  • Error Cause: Enhanced Debugging

    Error Cause: Enhanced Debugging

    In ES13 (ECMAScript 2022), the property was introduced for the object. This property allows you to chain errors…

  • #JS with() new Array method

    #JS with() new Array method

    The method is a new addition to JavaScript's array methods introduced in ECMAScript 2023 (ES14). It allows you to…

  • #JS Dynamic Object Keys

    #JS Dynamic Object Keys

    This one-liner uses computed property names, where the value of the prop variable is used as the key name inside the…

  • Object property existence check in JS

    Object property existence check in JS

    Suppose building a user profile system and need to check if a specific attribute (like "email") is present in a user…

  • Difference between return vs return await #JavaScript

    Difference between return vs return await #JavaScript

    In JavaScript, when using functions and to handle asynchronous operations, there's a difference between and . Return:…

  • Next.js 15 Release Candidate (RC) is now available

    Next.js 15 Release Candidate (RC) is now available

    The Next.js 15 Release Candidate (RC) is now available, offering a chance to test new features before the stable…

  • Angular v18 is now available!

    Angular v18 is now available!

    This version continues to innovate while bringing stability to the Angular ecosystem, which has become somewhat…

  • New upcoming array method called groupBy()

    New upcoming array method called groupBy()

    The method is a forthcoming addition to the JavaScript Array object, currently positioned at Stage 3 within the TC39…

  • Lazy Loading

    Lazy Loading

    Lazy loading is a technique in web development where assets (such as images, scripts, or stylesheets) are loaded only…

社区洞察

其他会员也浏览了