Tagasikutsefunktsioonid JavaScriptis
Funktsioone saab edastada parameetritena teistesse funktsioonidesse. Selliseid funktsioone-parameetreid nimetatakse tagasikutseteks (callback). Vaatame nendega töötamist näite abil.
Oletame, et tahame teha funktsiooni, mis esimese parameetrina võtab massiivi ja teise - tagasikutse, mida rakendatakse igale elemendile massiivis:
function each(arr, callback) {
// siin on mingi kood
}
Kirjutame meie funktsiooni realisatsiooni:
function each(arr, callback) {
let result = [];
for (let elem of arr) {
result.push( callback(elem) ); // kutsume välja tagasikutsefunktsiooni
}
return result;
}
Meie funktsioon each on universaalne.
See tähendab, et me saame sellesse edastada
erinevaid tagasikutseid, tehes erinevaid operatsioone
massiividega. Samal ajal meie funktsiooni kood jääb
muutumatuks - muutuvad ainult
edastatavad tagasikutsed.
Teeme näiteks meie funktsiooni abil mõne massiivi iga elemendi ruutu. Selleks edastame parameetrina vastava tagasikutse:
let result = each([1, 2, 3, 4, 5], function(num) {
return num ** 2;
});
console.log(result);
Ja nüüd tõstame massiivi elemendid kuupi. Selleks edastame parameetrina juba teise tagasikutse, mis teeb selle operatsiooni:
let result = each([1, 2, 3, 4, 5], function(num) {
return num ** 3;
});
console.log(result);
Antud on arvude massiiv. Meie loodud
funktsiooni each abil suurendage iga
element kaks korda.
Antud on stringide massiiv. Meie loodud
funktsiooni each abil pöörake iga stringi
sümbolid vastupidises järjekorras.
Antud on stringide massiiv. Meie loodud
funktsiooni each abil tehke iga stringi
esimene sümbol suureks täheks.