Closures are one of the most powerful features available at runtime, but they are also one of the most misunderstood. The Mozilla developer network defines closures as follows:
"Closures are functions that refer to independent (free) variables. In other words, the function defined in the closure 'remembers' the environment in which it was created".
We understand independent (free) variables as variables that persist beyond the lexical scope from which they were created. Let's look at an example:
function makeArmy() {
const shooters = [];
for (let i = 0; i < 10; i++) {
const shooter = () => { // a shooter is a function
console.log(i); // which should display it's number
};
shooters.push(shooter);
}
return shooters;
}
The preceding example is a JavaScript example, not a TypeScript...