Συναρτήσεις Callback στην JavaScript

Οι συναρτήσεις μπορούν να μεταβιβάζονται ως παράμετροι σε άλλες συναρτήσεις. Τέτοιες συναρτήσεις-παράμετροι ονομάζονται callback (callback). Ας δούμε τη λειτουργία τους με ένα παράδειγμα.

Ας υποθέσουμε ότι θέλουμε να φτιάξουμε μια συνάρτηση, που πρώτα θα δέχεται έναν πίνακα, και δεύτερον - ένα callback, που θα εφαρμόζεται σε κάθε στοιχείο του πίνακα:

javascriptfunction each(arr, callback) {
  // εδώ κάποιος κώδικας
}

Ας γράψουμε την υλοποίηση της συνάρτησής μας:

javascriptfunction each(arr, callback) {
  let result = [];
  
  for (let elem of arr) {
    result.push( callback(elem) ); // καλούμε τη συνάρτηση-callback
  }
  
  return result;
}

Η συνάρτησή μας each - είναι καθολική. Αυτό σημαίνει ότι μπορούμε να της μεταβιβάζουμε διάφορα callbacks, εκτελώντας διαφορετικές πράξεις σε πίνακες. Ταυτόχρονα ο κώδικας της συνάρτησής μας παραμένει αμετάβλητος - θα αλλάζουν μόνο τα callbacks που μεταβιβάζονται.

Ας χρησιμοποιήσουμε ως παράδειγμα τη συνάρτησή μας για να υψώσουμε στο τετράγωνο κάθε στοιχείο ενός πίνακα. Για αυτό θα μεταβιβάσουμε ως παράμετρο το αντίστοιχο callback:

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

console.log(result);

Και τώρα ας υψώσουμε τα στοιχεία του πίνακα στον κύβο. Για αυτό ως παράμετρο θα μεταβιβάσουμε ήδη ένα άλλο callback, που εκτελεί αυτή την πράξη:

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

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

Δίνεται ένας πίνακας με αριθμούς. Με τη βοήθεια της δημιουργημένης μας συνάρτησης each αυξήστε κάθε στοιχείο κατά δύο φορές.

Задание 2

Δίνεται ένας πίνακας με συμβολοσειρές. Με τη βοήθεια της δημιουργημένης μας συνάρτησης each αναστρέψτε τους χαρακτήρες κάθε συμβολοσειράς σε αντίστροφη σειρά.

Задание 3

Δίνεται ένας πίνακας με συμβολοσειρές. Με τη βοήθεια της δημιουργημένης μας συνάρτησης each κάντε κεφαλαίο τον πρώτο χαρακτήρα κάθε συμβολοσειράς.