Passare funzioni come parametri in JavaScript
Le funzioni, proprio come numeri, stringhe e array, possono essere passate come parametri ad altre funzioni.
Esaminiamo più in dettaglio con un esempio pratico.
Supponiamo di avere una funzione test che accetta
due parametri:
test(parametro1, parametro2);
Passiamo come primo parametro della funzione test
una funzione anonima che restituisce
1, e come secondo parametro - una funzione
anonima che restituisce 2:
test(
function() {return 1;},
function() {return 2;}
);
Il codice sopra non è ancora funzionante, poiché non abbiamo creato la funzione stessa. Creiamola:
function test(func1, func2) {
}
Nella definizione della funzione, abbiamo specificato due parametri
- func1 e func2. Questi parametri
non sanno nulla su cosa verrà passato in essi.
Potremmo, ad esempio, passare dei numeri:
test(1, 2); // chiamiamo la funzione
function test(func1, func2) {
console.log(func1); // stamperà 1
console.log(func2); // stamperà 2
}
Oppure possiamo passare delle funzioni:
test(
function() {return 1;}, // primo parametro
function() {return 2;} // secondo parametro
);
function test(func1, func2) {
console.log(func1); // stamperà 'function() {return 1;}'
console.log(func2); // stamperà 'function() {return 2;}'
}
Come puoi vedere, ora nella console viene stampato il codice sorgente delle funzioni. Facciamo in modo che stampi i loro risultati. Per farlo, aggiungiamo le parentesi tonde alle funzioni:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // stamperà 1
console.log( func2() ); // stamperà 2
}
Stampiamo nella console la somma dei risultati della prima e della seconda funzione:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // stamperà 3
}
Crea una funzione test che accetta come parametri
3 funzioni. Passa ad
essa come primo parametro una funzione che restituisce
1, come secondo - una funzione che restituisce
2, come terzo - una funzione che restituisce
3. Stampa nella console la somma dei risultati
delle funzioni.