Java Script

What is a “closure” in JavaScript? Provide an example.

A closure is an inner function that has access to the outer (enclosing) function’s variables—scope chain. The closure has three scope chains: it has access to its own scope (variables defined between its curly brackets), it has access to the outer function’s variables, and it has access to the global variables.

var add = (function () {
    // this is the "self invoking" function that is only run once.
    // it sets the "counter" variable to 0 and returns a function
    // this return function gets assigned to the "add" variable, which makes "add" a function that can be called with add();
    var counter = 0;
    function private_function(){ alert('foo'); }
    return function () {  
      // this is the "closure". it has access to the private variables defined in the "self invoking" function above.
      return counter += 1;
    }
})();

add();
add();
add();

// the counter is now 3

private_function(); // doesn't work because we don't have access to the private scope within the "add" variable, only the closure can access this private function. 

1 Like

THANK YOU :grinning: