Συναρτήσεις Callback στην JavaScript
Οι συναρτήσεις μπορούν να μεταβιβάζονται ως παράμετροι σε άλλες συναρτήσεις. Τέτοιες συναρτήσεις-παράμετροι ονομάζονται callback (callback). Ας δούμε τη λειτουργία τους με ένα παράδειγμα.
Ας υποθέσουμε ότι θέλουμε να φτιάξουμε μια συνάρτηση, που πρώτα θα δέχεται έναν πίνακα, και δεύτερον - ένα callback, που θα εφαρμόζεται σε κάθε στοιχείο του πίνακα:
function each(arr, callback) {
// εδώ κάποιος κώδικας
}
Ας γράψουμε την υλοποίηση της συνάρτησής μας:
function each(arr, callback) {
let result = [];
for (let elem of arr) {
result.push( callback(elem) ); // καλούμε τη συνάρτηση-callback
}
return result;
}
Η συνάρτησή μας each - είναι καθολική.
Αυτό σημαίνει ότι μπορούμε να της μεταβιβάζουμε
διάφορα callbacks, εκτελώντας διαφορετικές πράξεις
σε πίνακες. Ταυτόχρονα ο κώδικας της συνάρτησής μας παραμένει
αμετάβλητος - θα αλλάζουν μόνο
τα callbacks που μεταβιβάζονται.
Ας χρησιμοποιήσουμε ως παράδειγμα τη συνάρτησή μας για να υψώσουμε στο τετράγωνο κάθε στοιχείο ενός πίνακα. Για αυτό θα μεταβιβάσουμε ως παράμετρο το αντίστοιχο callback:
let result = each([1, 2, 3, 4, 5], function(num) {
return num ** 2;
});
console.log(result);
Και τώρα ας υψώσουμε τα στοιχεία του πίνακα στον κύβο. Για αυτό ως παράμετρο θα μεταβιβάσουμε ήδη ένα άλλο callback, που εκτελεί αυτή την πράξη:
let result = each([1, 2, 3, 4, 5], function(num) {
return num ** 3;
});
console.log(result);
Δίνεται ένας πίνακας με αριθμούς. Με τη βοήθεια της δημιουργημένης
μας συνάρτησης each αυξήστε κάθε
στοιχείο κατά δύο φορές.
Δίνεται ένας πίνακας με συμβολοσειρές. Με τη βοήθεια της δημιουργημένης
μας συνάρτησης each αναστρέψτε τους χαρακτήρες
κάθε συμβολοσειράς σε αντίστροφη σειρά.
Δίνεται ένας πίνακας με συμβολοσειρές. Με τη βοήθεια της δημιουργημένης
μας συνάρτησης each κάντε κεφαλαίο
τον πρώτο χαρακτήρα κάθε συμβολοσειράς.