🔀 Le cours : décider en JavaScript
Les conditions permettent à un programme de choisir : afficher un message d'erreur ou non, accepter une réponse ou la refuser. En JavaScript, la syntaxe de if, else et switch est celle du C et de Java ; ce qui change, c'est ce que le langage considère comme « vrai » et la façon de comparer.
Truthy et falsy
Une condition n'a pas besoin d'être un booléen : JavaScript la convertit. Il y a exactement six valeurs fausses (*falsy*) : false, 0, "" (texte vide), null, undefined et NaN. Tout le reste est vrai, y compris des cas qui surprennent : le texte "0", un tableau vide [] ou un objet vide {}.
const valeurs = [0, "", "0", [], null, undefined, NaN, "texte"];
const verites = valeurs.map((v) => Boolean(v));
console.log(verites.join(" "));
Affichagefalse false true true false false false true
Comparer : === et les autres
| Opérateur | Sens | Remarque |
=== !== | égal / différent, sans conversion | à utiliser systématiquement |
< <= > >= | ordre | nombres : numérique ; textes : ordre alphabétique |
== != | égal / différent après conversion | à éviter |
Attention : comparer deux textes se fait lettre par lettre. "10" < "9" est vrai, car "1" précède "9". Convertis d'abord avec Number(…).
console.log("10" < "9", 10 < 9, Number("10") < Number("9"));
Affichagetrue false false
ET, OU, NON : plus que des booléens
&& et || s'arrêtent dès que le résultat est connu et renvoient la valeur qui a décidé, pas forcément true ou false. a || b renvoie a s'il est vrai, sinon b : on s'en sert pour une valeur par défaut. a && b renvoie a s'il est faux, sinon b.
?? (opérateur de coalescence nulle) ressemble à ||, mais ne réagit qu'à null et undefined. Il est préférable quand 0 ou "" sont des valeurs légitimes.
const quantite = 0;
console.log(quantite || 10);
console.log(quantite ?? 10);
console.log("" || "invite");
console.log(null && "jamais");
Affichage10
0
invite
null
switch
switch compare une valeur à plusieurs cas avec ===. Sans break, l'exécution continue dans le cas suivant (la « chute »), ce qui sert à regrouper des cas (samedi et dimanche dans l'exemple de la deuxième carte). default traite tout le reste. Pour des plages de valeurs (une note entre 10 et 12), if / else if est plus adapté.
L'opérateur ternaire
condition ? siVrai : siFaux est une expression : elle produit une valeur, ce qui permet de l'utiliser directement dans une chaîne modèle ou une affectation.
const note = 14;
const mention = note >= 16 ? "tres bien" : note >= 12 ? "bien" : "passable";
const parite = note % 2 === 0 ? "pair" : "impair";
console.log(`${note} : ${mention}, ${parite}`);
Chaînage optionnel ?.
Lire une propriété d'une valeur null ou undefined lève une erreur (« Cannot read properties of null »). ?. s'arrête proprement et renvoie undefined ; combiné avec ??, il donne une valeur de secours.
const eleve = { nom: "Lina", adresse: null };
console.log(eleve.adresse?.ville);
console.log(eleve.adresse?.ville ?? "ville inconnue");
Affichageundefined
ville inconnue