else en JavaScript : la branche exécutée quand la condition est fausse

else exécute un bloc lorsque la condition du if est fausse, et s'enchaîne en else if pour traiter plusieurs cas qui s'excluent mutuellement.
3 min de lecture
Believemy logo

else n'existe jamais seul. Il complète un if en prenant en charge tout ce que la condition a laissé de côté, ce qui garantit qu'exactement une des deux branches sera parcourue.

C'est aussi le mot-clé qu'on écrit trop souvent. Une partie des else d'une base de code peuvent disparaître sans rien changer au comportement, et le code y gagne toujours.


Définition

else se place immédiatement après le bloc d'un if et exécute son propre bloc quand la condition a été évaluée à faux. Il ne porte pas de condition : il ramasse tous les autres cas.

JAVASCRIPT
const stock = 0;

if (stock > 0) {
  console.log("Disponible");
} else {
  console.log("Rupture de stock");   // c'est cette branche
}

Les deux blocs s'excluent : le moteur n'en exécute jamais qu'un seul, puis reprend après l'accolade fermante du second.


La chaîne else if

else if n'est pas un mot-clé, c'est un if écrit dans le else du précédent. La chaîne se lit de haut en bas et s'arrête à la première condition vraie, ce qui rend l'ordre des tests décisif.

JAVASCRIPT
function tarif(age) {
  if (age < 12) {
    return "enfant";
  } else if (age < 26) {
    return "jeune";
  } else {
    return "plein tarif";
  }
}

console.log(tarif(8), tarif(20), tarif(40));   // enfant jeune plein tarif

Inverser les deux premières conditions casserait la fonction sans lever la moindre erreur : un enfant de huit ans passerait le test age < 26 et repartirait avec le tarif jeune. Quand les cas sont nombreux et comparés à une même valeur, un switch exprime la même intention de façon plus plate.


Quand s'en passer

Dès qu'une branche se termine par un return, le else devient inutile : la fonction est déjà partie. Le retirer supprime un niveau d'indentation par cas traité.

JAVASCRIPT
function tarif(age) {
  if (age < 12) return "enfant";
  if (age < 26) return "jeune";
  return "plein tarif";
}

La version courte se lit comme une liste de règles, du cas le plus étroit au cas général. La version longue oblige à suivre trois niveaux d'imbrication pour atteindre la même information.

Bon à savoir

Sans accolades, else ne gouverne que l'instruction qui le suit immédiatement. Une deuxième ligne alignée dessous n'appartient plus à la branche et s'exécute dans tous les cas, sans qu'aucun message ne le signale. C'est la raison pour laquelle les accolades sont exigées même sur une seule ligne.


Questions fréquentes

Question

Faut-il toujours écrire un else ?

Non. Un else vide, ou qui répète ce que le code fait déjà par défaut, ajoute du bruit sans information. La question utile est différente : le cas contraire mérite-t-il un traitement propre ? Si oui, la branche a sa place ; sinon, l'absence de branche dit exactement la même chose.


Question

Quelle différence avec l'opérateur ternaire ?

L'Opérateur ternaire (?:) choisit entre deux valeurs, if et else choisissent entre deux blocs d'instructions. Pour affecter une variable selon une condition, le ternaire tient sur une ligne et se lit mieux. Dès qu'une branche fait plusieurs choses, la forme en blocs reprend l'avantage.


Question

Comment gérer une valeur manquante plutôt qu'une condition fausse ?

Un if suivi d'un else traite zéro et la chaîne vide comme des absences, ce qui est rarement voulu. Pour ne remplacer que null et undefined, la Coalescence des nuls (??) est faite pour cela et laisse passer les valeurs légitimes qui se trouvent être fausses.

Termes connexes

Découvrez notre glossaire JavaScript

Tous les mots de JavaScript expliqués simplement : mots-clés, objets natifs, méthodes, erreurs et concepts. Définitions claires et exemples qui tournent, pour apprendre et pour se dépanner.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.