Egy boolean kontextusban (if, &&, ||, !) minden értéket truthy vagy falsy módon kezelnek. Pontosan 8 falsy érték van — minden más truthy.
A falsy értékek: , , , (BigInt nulla), (üres string), , , .
Egy boolean kontextusban (if, &&, ||, !) minden értéket truthy vagy falsy módon kezelnek. Pontosan 8 falsy érték van — minden más truthy.
A falsy értékek: , , , (BigInt nulla), (üres 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!
Meglepetések: a "0", [] és {} mind truthy, még akkor is, ha "üresnek" tűnnek.
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
Az || bármilyen falsy értéknél visszaesik, így egy érvényes 0 vagy "" helyettesítődik. A nullish coalescing operátor ?? csak null/undefined esetén esik vissza, ami általában az, amit valóban szeretnél.
A pontos falsy halmaz ismerete megelőzi a finom hibákat — különösen a számok védelme (if (count > 0) nem if (count)) és az ?? és || közötti választás az alapértelmezett értékekhez.