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
?