CLosure
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())