Closures

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 ...

Get Learning TypeScript 2.x - Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.