In een booleaanse context (een if, &&, ||, !) wordt elke waarde behandeld als truthy of falsy. Er zijn precies 8 falsy-waarden — al het andere is truthy.
De falsy-waarden: , , , (BigInt zero), (empty string), , , .
In een booleaanse context (een if, &&, ||, !) wordt elke waarde behandeld als truthy of falsy. Er zijn precies 8 falsy-waarden — al het andere is truthy.
De falsy-waarden: , , , (BigInt zero), (empty string), , , .
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!
De verassingen: "0", [] en {} zijn allemaal truthy, ook al voelen ze "leeg."
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
|| valt terug voor elke falsy-waarde, dus een geldige 0 of "" wordt vervangen. De nullish coalescing-operator ?? valt terug alleen voor null/undefined, wat meestal is wat je echt wilt.
Het kennen van de exacte falsy-verzameling voorkomt subtiele bugs — vooral het beveiligen van getallen (if (count > 0) niet if (count)) en het kiezen van ?? vs || voor standaardwaarden.