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:

javascripttest(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:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

Il codice sopra non è ancora funzionante, poiché non abbiamo creato la funzione stessa. Creiamola:

javascriptfunction 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:

javascripttest(1, 2); // chiamiamo la funzione

function test(func1, func2) {
  console.log(func1); // stamperà 1
  console.log(func2); // stamperà 2
}

Oppure possiamo passare delle funzioni:

javascripttest(
  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:

javascripttest(
  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:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

function test(func1, func2) {
  console.log( func1() + func2() ); // stamperà 3
}
Задание 1

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.