Sulud JavaScriptis
Uurime nüüd mõistet sulund (closure). Tegelikult olete selle mõistega juba tuttav, jääb üle vaid õppida õiget terminoloogiat.
Seega, sulund on funktsioon koos kõigi välismuutujatega, mis sellele kättesaadavad on. Või teisiti öeldes, sulund on funktsioon koos oma leksilise keskkonnaga.
JavaScriptis mõeldakse enamasti väljendiga "funktsiooni sulund" mitte seda funktsiooni ennast, vaid just selle välismuutujaid. Kui mõni funktsioon saab muutuja oma leksilisest keskkonnast, siis öeldakse "muutuja võetakse sulundist".
Meenutame koodi, mille tegime eelmises õppetükis:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // väljastab 1
Sel juhul võib öelda, et funktsioon
func saab muutuja num
väärtuse sulundist. Samuti võib öelda,
et funktsioon func salvestab muutuja
num väärtuse sulundi.