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:

javascriptfunction each(arr, callback) {
  // siin on mingi kood
}

Kirjutame meie funktsiooni realisatsiooni:

javascriptfunction 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:

javascriptlet 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:

javascriptlet result = each([1, 2, 3, 4, 5], function(num) {
  return num ** 3;
});

console.log(result);
Задание 1

Antud on arvude massiiv. Meie loodud funktsiooni each abil suurendage iga element kaks korda.

Задание 2

Antud on stringide massiiv. Meie loodud funktsiooni each abil pöörake iga stringi sümbolid vastupidises järjekorras.

Задание 3

Antud on stringide massiiv. Meie loodud funktsiooni each abil tehke iga stringi esimene sümbol suureks täheks.