Closure IN LOOP

js closure

by bhupendra negi

JavaScript

var arr = [];

function generateFN() {

  for (var i = 0; i < 3; i++) {
    arr.push(function() {
      console.log(i)
    });
  }
  return arr;
}

var fn = generateFN();
fn[0]();
fn[1]();
// -------------ES-6 closure ---------------//
console.log("es6 closure")
var arr = [];

function generateFN() {

  for (let i = 0; i < 3; i++) {
    arr.push(function() {
      console.log(i)
    });
  }
  return arr;
}

var fn = generateFN();
fn[0]();
fn[1]();
//-----------ES 5 FIX --------------------//
console.log("es5 FIX")
var arr = [];

function generateFN() {

  for (var i = 0; i < 3; i++) {
    arr.push(
      (function(j) {
        return function() {
          console.log(j)
        }
      })(i))


  }
  return arr;
}

var fn = generateFN();
fn[0]();
fn[1]();