Μεταβίβαση συναρτήσεων ως παραμέτρων στο JavaScript
Οι συναρτήσεις, όπως οι αριθμοί, οι συμβολοσειρές και οι πίνακες, μπορούν να μεταβιβαστούν ως παράμετροι σε άλλες συναρτήσεις.
Ας το εξετάσουμε λεπτομερέστερα με ένα πρακτικό παράδειγμα.
Ας υποθέσουμε ότι έχουμε μια συνάρτηση test που δέχεται
δύο παραμέτρους:
test(παράμετρος1, παράμετρος2);
Ας μεταβιβάσουμε στην πρώτη παράμετρο της συνάρτησης test
μια ανώνυμη συνάρτηση που επιστρέφει
1, και στη δεύτερη παράμετρο - μια ανώνυμη
συνάρτηση που επιστρέφει 2:
test(
function() {return 1;},
function() {return 2;}
);
Ο κώδικας που παρουσιάζεται παραπάνω δεν λειτουργεί ακόμη, αφού δεν έχουμε δημιουργήσει την ίδια τη συνάρτηση. Ας το κάνουμε:
function test(func1, func2) {
}
Κατά τον ορισμό της συνάρτησης, ορίσαμε δύο παραμέτρους
- func1 και func2. Αυτές οι παράμετροι
δεν γνωρίζουν τίποτα σχετικά με το τι θα μεταβιβαστεί σε αυτές.
Μπορούμε, για παράδειγμα, να μεταβιβάσουμε αριθμούς:
test(1, 2); // καλούμε τη συνάρτηση
function test(func1, func2) {
console.log(func1); // θα εμφανίσει 1
console.log(func2); // θα εμφανίσει 2
}
Ή μπορούμε να μεταβιβάσουμε συναρτήσεις:
test(
function() {return 1;}, // πρώτη παράμετρος
function() {return 2;} // δεύτερη παράμετρος
);
function test(func1, func2) {
console.log(func1); // θα εμφανίσει 'function() {return 1;}'
console.log(func2); // θα εμφανίσει 'function() {return 2;}'
}
Όπως βλέπετε, τώρα στην κονσόλα εμφανίζεται ο πηγαίος κώδικας των συναρτήσεων. Ας το αλλάξουμε έτσι ώστε να εμφανίζει τα αποτελέσματά τους. Για να το κάνουμε αυτό, γράφουμε στις συναρτήσεις παρενθέσεις:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // θα εμφανίσει 1
console.log( func2() ); // θα εμφανίσει 2
}
Ας εμφανίσουμε στην κονσόλα το άθροισμα των αποτελεσμάτων της πρώτης και της δεύτερης συνάρτησης:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // θα εμφανίσει 3
}
Δημιουργήστε μια συνάρτηση test που δέχεται ως παραμέτρους
3 συναρτήσεις. Μεταβιβάστε σε
αυτήν ως πρώτη παράμετρο μια συνάρτηση που επιστρέφει
1, ως δεύτερη - μια συνάρτηση που επιστρέφει
2, ως τρίτη - μια συνάρτηση που επιστρέφει
3. Εμφανίστε στην κονσόλα το άθροισμα των αποτελεσμάτων
των συναρτήσεων.