I ett booleskt sammanhang (en if, &&, ||, !) behandlas varje värde som antingen truthy eller falsy. Det finns exakt 8 falsy värden — allt annat är truthy.
De falsy värdena: , , , (BigInt noll), (tom sträng), , , .
I ett booleskt sammanhang (en if, &&, ||, !) behandlas varje värde som antingen truthy eller falsy. Det finns exakt 8 falsy värden — allt annat är truthy.
De falsy värdena: , , , (BigInt noll), (tom sträng), , , .
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!
Överraskningarna: "0", [] och {} är alla truthy, även om de känns "tomma".
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
|| faller tillbaka för vilket som helst falsy värde, så ett giltigt 0 eller "" blir ersatt. Nullish coalescing-operatorn ?? faller tillbaka endast för null/undefined, vilket är vanligtvis det du faktiskt vill ha.
Att känna till den exakta falsy-mängden förhindrar subtila buggar — särskilt att skydda tal (if (count > 0) inte if (count)) och att välja ?? framför || för standardvärden.