Utilisez return
pour spécifier la valeur que la fonction doit produire comme résultat final. Lorsque l'interpréteur atteint une instruction return
, la fonction qui contient cette instruction se termine immédiatement et la valeur spécifiée est renvoyée au contexte dans lequel la fonction a été appelée:
const myFunction = function() {
return 2 + 2;
}
myFunction();
> 4
Une fonction qui renvoie une valeur peut être traitée efficacement comme les données qu'elle contient, à l'instar d'une variable:
const myFunction = function() {
return 2 + 2;
}
myFunction() + myFunction();
> 8
Une instruction return
sans expression met fin à la fonction et renvoie undefined
:
const myFunction = function() {
return;
}
myFunction();
> undefined
Étant donné que le mot clé return
signale la fin d'une fonction, tout code qui suit un élément return
rencontré n'est pas exécuté:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
myFunction();
> true
De plus, le code qui suit une instruction return
rencontrée peut entraîner un avertissement (mais pas une erreur) dans les consoles de développement de certains navigateurs:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
> unreachable code after return statement
myFunction();
> true
Là encore, cela ne s'applique qu'à une instruction return
rencontrée lors de l'exécution de la fonction, et non au code qui suit une instruction return
de manière séquentielle:
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."
Le fait de "court-circuiter" une fonction à l'aide d'une return
initiale peut permettre un code plus concis qu'une instruction return
unique à la fin d'une fonction. Par exemple, la fonction suivante détermine si une valeur transmise est une chaîne contenant au moins cinq caractères. Si la valeur transmise n'est pas un littéral de chaîne, le code qui compte les caractères n'est pas nécessaire et la fonction peut renvoyer un résultat false
immédiatement:
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
Les expressions de fonction fléchée sont uniques en ce sens que le mot clé return
est implicite lorsque le corps d'une fonction fléchée contient une seule expression et aucune syntaxe de bloc:
const myFunction = () => 2 + 2;
myFunction();
> 4
Si vous utilisez une syntaxe de bloc pour définir le corps de la fonction fléchée, un élément return
explicite est requis, même si le corps de la fonction ne contient qu'une seule expression:
const myFunction = () => { 2 + 2 };
myFunction();
> undefined
const myFunction = () => { return 2 + 2 };
myFunction();
> 4
Testez vos connaissances
À quoi sert return
?