Dans un contexte booléen (if, &&, ||, !), chaque valeur est traitée comme soit truthy soit falsy. Il existe exactement 8 valeurs falsy — tout le reste est truthy.
Les valeurs falsy : , , , (BigInt zéro), (chaîne vide), , , .
Dans un contexte booléen (if, &&, ||, !), chaque valeur est traitée comme soit truthy soit falsy. Il existe exactement 8 valeurs falsy — tout le reste est truthy.
Les valeurs falsy : , , , (BigInt zéro), (chaîne vide), , , .
false0-00n""nullundefinedNaNif ("") {} // skipped — empty string is falsy
if (0) {} // skipped
if ("0") {} // RUNS — non-empty string is truthy!
if ([]) {} // RUNS — empty array is truthy!
if ({}) {} // RUNS — empty object is truthy!
Les surprises : "0", [] et {} sont tous truthy, même s'ils semblent "vides".
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
|| se replie pour toute valeur falsy, de sorte qu'un 0 ou "" valide est remplacé. L'opérateur nullish coalescing ?? se replie uniquement pour null/undefined, ce qui est généralement ce que vous voulez réellement.
Connaître l'ensemble exact des valeurs falsy prévient les bugs subtils — notamment protéger les nombres (if (count > 0) et non if (count)) et choisir ?? vs || pour les valeurs par défaut.