⊗jsPmFNFRF 252 of 505 menu

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.

trhuuzluzcpl