Dal momento che una funzione è un oggetto è possibile restituirla come valore di ritorno dell'esecuzione di un'altra funzione. Consideriamo, ad esempio, il seguente codice:
var incrementatore = function(incremento) {
return function(valore) {
return incremento + valore;
};
};
Alla variabile incrementatore
viene assegnata una funzione che restituisce un'altra funzione. La funzione restituita incrementa il suo argomento con l'argomento della funzione che la restituisce.
In altre parole, la funzione incrementatore
genera una funzione che incrementa un valore numerico di un numero predefinito. Ad esempio, se vogliamo creare una funzione che incrementa di cinque il valore passato come parametro possiamo farlo in questo modo:
var incrementaDiCinque = incrementatore(5);
A questo punto possiamo utilizzare la funzione incrementaDiCinque()
per aumentare di cinque unità il valore passato come parametro:
console.log(incrementaDiCinque(4)); // 9
console.log(incrementaDiCinque(16)); // 21