return

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 qu'on souhaite renvoyer. 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. 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 Statut 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 2016 Draft (7th Edition, ECMA-262)
La définition de 'Return statement' dans cette spécification.
Projet  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple (Oui) (Oui) (Oui) (Oui) (Oui)
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)

Voir aussi

Étiquettes et contributeurs liés au document

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