La structure d'une condition if en JavaScript
Une instruction if exécute un bloc de code uniquement lorsqu'une condition est vraie. La syntaxe est simple : un mot-clé, une condition entre parenthèses, puis un bloc délimité par des accolades :
La condition age >= 18 vaut true, donc le bloc s'exécute. Si age était à 16, la condition renverrait false et JavaScript ignorerait complètement le bloc.
Les accolades sont techniquement facultatives quand le bloc ne contient qu'une seule instruction, mais mettez-les systématiquement. Un if sans accolades est une source de bugs bien connue : il suffit que quelqu'un ajoute une deuxième ligne plus tard en oubliant qu'elle ne fait pas partie du bloc, et c'est la catastrophe.
else : la branche par défaut
Associez if à else pour exécuter un autre code quand la condition est fausse :
Une seule des deux branches s'exécute. Jamais les deux, jamais aucune. Le else ne prend pas de condition à lui — c'est le fourre-tout pour « le if a renvoyé faux ».
else if en JavaScript : gérer plusieurs cas
Quand tu as plus de deux cas à traiter, enchaîne-les avec else if. JavaScript évalue chaque condition dans l'ordre et s'arrête à la première qui est vraie :
Une seule branche s'exécute. Dès qu'une condition est vraie, le reste est ignoré — même si d'autres conditions seraient également vraies. D'où l'importance de l'ordre : si vous inversiez la chaîne pour tester score >= 60 en premier, toutes les personnes au-dessus de 60 se retrouveraient avec un D.
Le else final est facultatif, mais le mettre rend votre intention explicite : « si rien d'autre n'a matché, fais ceci ».
N'importe quelle expression peut servir de condition
Ce qui se trouve entre les parenthèses n'est pas forcément une comparaison. Ça peut être n'importe quelle expression — JavaScript convertit ensuite le résultat en booléen :
Les chaînes non vides sont truthy. 0 et les chaînes vides sont falsy, donc quand items.length vaut 0, c'est la branche else qui s'exécute. C'est l'idiome classique en JavaScript pour vérifier « s'il y a quelque chose ».
La liste complète des valeurs falsy est courte, et ça vaut le coup de la retenir par cœur : false, 0, -0, 0n, "", null, undefined et NaN. Tout le reste est truthy — y compris "0", "false", [] et {}. Ces deux derniers piègent pas mal de monde.
Combiner plusieurs conditions en JavaScript : && et ||
Utilise && (et) et || (ou) pour combiner des conditions :
&& exige que les deux côtés soient truthy. || se contente d'un seul. Les deux court-circuitent l'évaluation : && s'arrête à la première valeur falsy, || s'arrête à la première valeur truthy. C'est utile quand la seconde condition a un effet de bord ou risque de planter — user && user.name renvoie tranquillement undefined si user vaut null, sans lever d'erreur.
Pense à mettre des parenthèses dès que tu mélanges plusieurs opérateurs logiques, histoire de rendre la priorité claire :
Sans les parenthèses, && est prioritaire sur ||, ce qui donne rarement le résultat qu'on lit intuitivement.
== vs === (préférez ===)
Pour tester l'égalité dans un if, utilisez === et !==, jamais == ni != :
== convertit les types avant de comparer, ce qui mène à des surprises du genre "" == 0 qui renvoie true, ou encore null == undefined qui vaut aussi true. ===, lui, compare sans conversion : même type et même valeur. Prenez l'habitude d'utiliser === par défaut. La seule exception courante, c'est x == null, qui permet de vérifier à la fois null et undefined en une seule expression.
L'opérateur ternaire en JavaScript
Quand il s'agit de choisir entre deux valeurs, l'opérateur ternaire condition ? a : b est souvent plus lisible qu'un if/else complet :
Le ternaire est une expression — il produit une valeur. C'est toute la différence avec if/else, qui est une instruction. L'opérateur ternaire est à privilégier quand tu as besoin du résultat (affectation à une variable, valeur de retour, construction d'une chaîne). Le if/else, lui, est fait pour déclencher des effets de bord.
Tu peux enchaîner plusieurs ternaires, mais la lisibilité s'effondre très vite :
// Ne faites pas ceci :
const grade = score >= 90 ? "A" : score >= 80 ? "B" : score >= 70 ? "C" : "F";
Si tu enchaînes plusieurs cas, reviens au else if.
If imbriqué ou else if à plat
Parfois, une condition n'a de sens qu'à l'intérieur d'une autre. Dans ce cas, imbriquer reste une bonne option :
Mais imbriquer trois ou quatre niveaux, c'est mauvais signe. Aplatis tout ça avec des early returns ou en combinant les conditions :
Les retours anticipés gardent chaque branche courte et au même niveau d'indentation. C'est bien plus lisible qu'une pyramide de if imbriqués.
Le piège classique : l'affectation dans un if
= affecte une valeur. === compare. Confondre les deux dans une condition, c'est le bug classique par excellence :
status = "done" attribue "done" à status et renvoie "done", ce qui est truthy — du coup le bloc s'exécute à tous les coups, et tu as écrasé ta variable sans t'en rendre compte. Les linters repèrent ce genre de bourde. Le mode strict, non. Reste vigilant, et utilise === dès que tu veux vraiment faire une comparaison.
La suite : switch
Quand il s'agit de comparer une seule valeur à plusieurs cas possibles, enchaîner les else if devient vite lourd. L'instruction switch de JavaScript est taillée pour ça — avec ses propres subtilités autour de break et du fall-through, qu'on verra juste après.
Questions fréquentes
Comment écrit-on un if/else en JavaScript ?
On place une condition entre parenthèses après if, puis un bloc entre accolades. On enchaîne avec else et un second bloc pour le cas par défaut. Exemple : if (age >= 18) { console.log('adulte'); } else { console.log('mineur'); }. La condition peut être n'importe quelle expression — JavaScript la convertit automatiquement en booléen.
Quelle différence entre else if et if imbriqué en JavaScript ?
else if enchaîne plusieurs conditions dont une seule sera exécutée : JavaScript les teste dans l'ordre et s'arrête à la première qui est vraie. Un if imbriqué, lui, place une condition à l'intérieur d'une autre, typiquement pour tester une seconde condition uniquement si la première est vérifiée. En pratique, une chaîne else if à plat se lit presque toujours mieux qu'un empilement de if imbriqués.
Quand utiliser l'opérateur ternaire plutôt qu'un if/else ?
Le ternaire condition ? a : b est parfait quand on choisit entre deux valeurs au sein d'une expression : affecter une variable, renvoyer une valeur depuis une fonction, construire une chaîne de caractères. On garde if/else dès que les branches contiennent des instructions avec effets de bord ou des blocs un peu longs. Et attention : les ternaires chaînés deviennent très vite illisibles.
Pourquoi if (0) se comporte comme if (false) en JavaScript ?
En fait, c'est exactement pareil : les deux sautent le bloc. JavaScript convertit la condition en booléen, et 0, '', null, undefined, NaN et false sont tous falsy. Le piège classique, c'est que '0' (chaîne non vide) ou [] (tableau vide) sont truthy, ce qui surprend quand on vient d'un autre langage.