Funzione che restituisce una funzione in JavaScript
Supponiamo di avere una funzione come questa, che restituisce una stringa:
function func() {
return '!';
}
let result = func();
console.log(result); // visualizzerà '!'
Ora, per analogia, invece di una stringa, restituiamo una funzione anonima:
function func() {
return function() {
return '!';
};
}
let result = func(); // la variabile result conterrà una funzione
console.log(result); // visualizzerà 'function() {return '!';}'
Come puoi vedere, la variabile result ora
è una funzione. Visualizziamo nella console
il risultato della sua esecuzione. Per farlo, aggiungiamo
le parentesi tonde:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // visualizzerà '!'
Poiché la chiamata func() restituisce una funzione,
possiamo chiamare immediatamente questa funzione
restituita, in questo modo: func()() - le prime
parentesi tonde ottengono il risultato della funzione
func (che è essa stessa una funzione),
e le seconde parentesi tonde vengono applicate al risultato di
func.
Proviamo:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // visualizzerà '!'
Crea una funzione func1 che, quando viene
chiamata in questo modo: func1()(), restituisca
il numero 1. Crea una funzione analoga
func2, che restituisce il numero 2.
Calcola la somma dei risultati di queste funzioni.