Utilizza return
per specificare il valore che la funzione deve produrre come risultato
o il risultato finale. Quando l'interprete raggiunge un'istruzione return
, la funzione che
contiene l'istruzione, termina immediatamente e il valore specificato viene restituito
il contesto in cui è stata chiamata la funzione:
const myFunction = function() {
return 2 + 2;
}
myFunction();
> 4
Una funzione che restituisce un valore può essere trattata efficacemente come i dati che contiene, 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
segue che un return
rilevato 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 causare un errore
un avviso (ma non un errore) in alcuni browser di sviluppo software:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
> unreachable code after return statement
myFunction();
> true
Anche in questo caso, si applica solo a un'istruzione return
rilevata durante il
della funzione, non 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."
"Cortocircuito" una funzione che utilizza un valore return
iniziale può consentire
rispetto a una singola istruzione return
alla fine di una funzione. Ad esempio,
funzione seguente determina se un valore passato è una stringa contenente cinque
o più caratteri. Se il valore passato non è una stringa letterale, il codice che
conta i caratteri non è necessario e la funzione può restituire un false
il risultato immediatamente:
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
Espressioni delle funzioni freccia
sono univoche in quanto la parola chiave return
è implicita quando il corpo di una funzione freccia
contiene una singola espressione e nessuna sintassi di blocco:
const myFunction = () => 2 + 2;
myFunction();
> 4
Se utilizzi la sintassi a blocchi per definire il corpo della funzione freccia, viene restituito un return
esplicito
è obbligatorio, anche se il corpo della funzione contiene solo una singola espressione:
const myFunction = () => { 2 + 2 };
myFunction();
> undefined
const myFunction = () => { return 2 + 2 };
myFunction();
> 4
Verifica le tue conoscenze
A cosa serve return
?