L'instruction return met fin à l'exécution d'une fonction et définit une valeur à renvoyer à la fonction appelante.

Syntaxe

return [[expression]]; 
expression
L'expression dont on souhaite renvoyer la valeur. Si elle est absente, la valeur renvoyée par défaut sera undefined.

Description

Lorsqu'une instruction return est utilisée dans une fonction, l'exécution de la fonction se termine. Si une valeur est fournie, elle sera renvoyée à l'appelant de la fonction. Si l'expression définissant la valeur de retour de la fonction est absente, la valeur undefined sera renvoyée. Par exemple, voici une fonction qui renvoie le carré de son argument x (où x est un nombre) :

function carre(x) {
  return x * x;
}
var demo = carre(3);
// demo vaudra alors 9

Les instructions qui suivent causeront chacune l'arrêt de l'exécution d'une fonction :

return;
return true;
return false;
return x;
return x + y / 3;

Ajout automatique de point-virgule

L'instruction return peut être impactée par l'ajout automatique de point-virgule (ASI en anglais). Il est interdit d'avoir un caractère de fin de ligne entre le mot-clé return et l'expression :

return
a + b;

// après ASI, cela sera transformé en 

return; 
a + b;

// Avertissement console : "expression non accessible après une instruction return sans point-virgule"

Note : À partir de Gecko 40 (Firefox 40 / Thunderbird 40 / SeaMonkey 2.37), un avertissement sera affiché dans la console si l'analyse du code trouve une instruction semblable à une expression après une instruction return sans point-virgule. Voir le bug 1005110 pour plus d'informations.

Exemples

Utiliser return

La fonction suivante renvoie le carré de son argument :

function carré(x) {
   return x * x;
}

Interrompre une fonction

Une fonction s'arrête immédiatement à l'instant où l'instruction return est traitée.

function compteur() {
  for (var compte = 1; ; compte++) {  // boucle infinie
    console.log(compte + "A"); // jusqu'à 5
      if (compte === 5) {          
        return;
      }
      console.log(compte + "B");  // jusqu'à 4
    }
  console.log(compte + "C");  // cette instruction n'est jamais utilisée
}

compteur();

// Résultat dans la console :
// 1A
// 1B
// 2A
// 2B
// 3A
// 3B
// 4A
// 4B
// 5A

Renvoyer une fonction

Pour en savoir plus sur les fermetures (closures), voir cet article sur les fermetures.

function magique(x) {
  return function calc(x) { return x * 42 };
}

var réponse = magique();
réponse(1337); // 56154

Spécifications

Spécification État Commentaires
ECMAScript 1st Edition (ECMA-262) Standard Définition initiale.
ECMAScript 5.1 (ECMA-262)
La définition de 'Return statement' dans cette spécification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Return statement' dans cette spécification.
Standard  
ECMAScript Latest Draft (ECMA-262)
La définition de 'Return statement' dans cette spécification.
Standard évolutif  

Compatibilité des navigateurs

FonctionnalitéChromeEdgeFirefoxInternet ExplorerOperaSafari
Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
FonctionnalitéAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : SphinxKnight, teoli, Jeremie, Mgjbot, BenoitL
 Dernière mise à jour par : SphinxKnight,