La parola chiave di ritorno

Utilizza return per specificare il valore che la funzione deve produrre come risultato finale. Quando l'interprete raggiunge un'istruzione return, la funzione che contiene l'istruzione termina immediatamente e il valore specificato viene restituito al contesto in cui la funzione è stata chiamata:

const myFunction = function() {
   return 2 + 2;
}

myFunction();
> 4

Una funzione che restituisce un valore può essere trattata in modo efficace come i dati che contiene, in modo simile a una variabile:

const myFunction = function() {
   return 2 + 2;
}

myFunction() + myFunction();
> 8

Un'istruzione return senza un'espressione termina la funzione e restituisce undefined:

const myFunction = function() {
   return;
}

myFunction();
> undefined

Poiché la parola chiave return indica la fine di una funzione, qualsiasi codice che segue un evento return riscontrato non viene eseguito:

const myFunction = function() {
   return true;
   console.log( "This is a string." );
}

myFunction();
> true

Inoltre, il codice che segue un'istruzione return rilevata potrebbe generare un avviso (ma non un errore) nelle console di sviluppo di alcuni browser:

const myFunction = function() {
   return true;
   console.log( "This is a string." );
}
> unreachable code after return statement

myFunction();
> true

Anche in questo caso, ciò si applica solo a un'istruzione return rilevata durante l'esecuzione della funzione, non a qualsiasi codice che segue un'istruzione return in sequenza:

const myFunction = function( myParameter ) {
   if( myParameter === undefined ) {
    return "This is the result.";
   }
   return "This is the alternate result.";
}

myFunction();
> "This is the result."

myFunction( true );
> "This is the alternate result."

Eseguire un "corto circuito" di una funzione con un comando return iniziale può consentire un codice più conciso rispetto a una singola istruzione return alla fine di una funzione. Ad esempio, la seguente funzione determina se un valore passato è una stringa contenente cinque o più caratteri. Se il valore passato non è un valore letterale stringa, il codice che conta i caratteri non è necessario e la funzione può restituire immediatamente un risultato false:

function myFunction( myString ) {
   if( typeof myString !== "string" ) {
    return false;
   }
   if( myString.length >= 5 ) {
    return true;
   } else {
    return false;
   }
}

myFunction( 100 );
> false

myFunction( "St" );
> false

myFunction( "String." );
> true

Le espressioni di funzione freccia sono univoche in quanto la parola chiave return è implicita quando il corpo di una funzione freccia contiene una singola espressione e nessun blocco di sintassi:

const myFunction = () => 2 + 2;

myFunction();
> 4

Se utilizzi la sintassi di blocco per definire il corpo della funzione freccia, è necessario un return esplicito, anche se il corpo della funzione contiene una sola espressione:

const myFunction = () => { 2 + 2 };

myFunction();
> undefined
const myFunction = () => { return 2 + 2 };

myFunction();
> 4

Verifica le tue conoscenze

A cosa serve return?

Specifica il risultato finale di una funzione.
Restituire il codice all'inizio della funzione.