Closures are one of the most powerful features in JavaScript and TypeScript, 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;
}
Please note that the preceding example is meant to be a JavaScript example.
We...