Utilisez return
pour spécifier la valeur que la fonction doit produire en tant que valeur finale
résultat. Lorsque l'interpréteur atteint une instruction return
, la fonction
contient cette instruction, et la valeur spécifiée est renvoyée à
le 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 efficacement traitée comme les données qu'elle contient, comme pour 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
indique la fin d'une fonction, tout code qui
Suit un 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 une
(mais pas d'erreur) dans certains navigateurs consoles de développement:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
> unreachable code after return statement
myFunction();
> true
Encore une fois, cela ne s'applique qu'à une instruction return
rencontrée lors de la
l'exécution de la fonction, et non de tout 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."
"Court-circuit" Une fonction qui utilise un return
précoce permet d'obtenir
code qu'une seule instruction return
à la fin d'une fonction. Par exemple,
la fonction suivante détermine si une valeur transmise est une chaîne contenant cinq
ou plus de caractères. Si la valeur transmise n'est pas un littéral de chaîne, le code
compte les caractères n'est pas nécessaire et la fonction peut renvoyer un 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
Expressions de la fonction fléchée
sont uniques en ce sens que le mot clé return
est implicite lorsqu'un corps de 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 obligatoire, 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
?