Συναρτήσεις 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);
Δίνεται ένας πίνακας με αριθμούς. Με τη βοήθεια της δημιουργημένης
μας συνάρτησης each αυξήστε κάθε
στοιχείο κατά δύο φορές.
Δίνεται ένας πίνακας με συμβολοσειρές. Με τη βοήθεια της δημιουργημένης
μας συνάρτησης each αναστρέψτε τους χαρακτήρες
κάθε συμβολοσειράς σε αντίστροφη σειρά.
Δίνεται ένας πίνακας με συμβολοσειρές. Με τη βοήθεια της δημιουργημένης
μας συνάρτησης each κάντε κεφαλαίο
τον πρώτο χαρακτήρα κάθε συμβολοσειράς.