Sulkeumat JavaScriptissä
Opiskelkaamme nyt käsite sulkeuma (closure). Itse asiassa olet jo tuttu tämän käsitteen kanssa, jäljellä on vain oppia oikea terminologia.
Siis, sulkeuma on funktio yhdessä kaikkien ulkopuolisten muuttujien kanssa, jotka ovat sille saatavilla. Tai toisin sanoen, sulkeuma on funktio yhdessä sen leksikaalisen ympäristön kanssa.
JavaScriptissä useimmiten, puhuttaessa "funktion sulkeuma", tarkoitetaan ei itse funktiota, vaan nimenomaan sen ulkoisia muuttujia. Jos jokin funktio saa muuttujan sen leksikaalisesta ympäristöstä, sanotaan "muuttuja otetaan sulkeumasta".
Muistakaamme koodi, jonka teimme edellisessä oppitunnissa:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // tulostaa 1
Tässä tapauksessa voidaan sanoa, että funktio
func saa muuttujan num arvon
sulkeumasta. Voidaan myös sanoa,
että funktio func säilyttää muuttujan
num arvon sulkeumassa.