CLosure

by Krishna Ananthi

JavaScript

for (var i = 0; i < 3; i++) {
  ((i) => {
    setTimeout(() => {
      console.log("var inside immediately executed func, creates block scope", i);
    }, 1000);
  })(i);
}
for (let i = 0; i < 3; i++) {
  ((i) => {
    setTimeout(() => {
      console.log("let", i);
    }, 1000);
  })(i);
}

for (var i = 0; i < 3; i++) {
  setTimeout(() => {
    console.log("var lexical/function scoping", i);
  }, 1000);
}

let f = () => {
  let i = 1;
  return () => {
    console.log(i);
  }
}
console.dir(f())