Closures

Closures Demos

by refan

JavaScript

for (var i = 1; i <= 5; i++) {
  setTimeout(function() {
    console.log("i:" + i);
  }, i * 1000);
}

for (var i = 1; i <= 5; i++) {

  (function(i) {

    setTimeout(function() {
      console.log("i:" + i);
    }, i * 1000);

  })(i);

};

var testModule = (function() {

  var counter = 0;

  return {

    incrementCounter: function() {
      return counter++;
    },

    resetCounter: function() {
      console.log("counter value prior to reset: " + counter);
      counter = 0;
    }
  };
  
})();
// Usage:
// Increment our counter
testModule.incrementCounter();

// Check the counter value and reset
// Outputs: counter value prior to reset: 1
testModule.resetCounter();