Utilisez return
pour spécifier la valeur que la fonction doit produire en tant que résultat final. Lorsque l'interprète atteint une instruction return
, la fonction qui la contient 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 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 une chaîne littérale, le code qui compte les caractères n'est pas nécessaire, et la fonction peut renvoyer immédiatement un résultat 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
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 la syntaxe de bloc pour définir le corps de la fonction à flèche, un 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
Vérifier vos connaissances
À quoi sert return
?