I en boolsk kontekst (en if, &&, ||, !) blir hver verdi behandlet som enten truthy eller falsy. Det finnes nøyaktig 8 falsy verdier — alt annet er truthy.
De falsy verdiene: , , , (BigInt null), (tom streng), , , .
I en boolsk kontekst (en if, &&, ||, !) blir hver verdi behandlet som enten truthy eller falsy. Det finnes nøyaktig 8 falsy verdier — alt annet er truthy.
De falsy verdiene: , , , (BigInt null), (tom streng), , , .
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!
Overraskelsene: "0", [], og {} er alle truthy, selv om de føles "tomme".
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
|| faller tilbake for enhver falsy verdi, så en gyldig 0 eller "" blir erstattet. Nullish coalescing operatoren ?? faller tilbake bare for null/undefined, som vanligvis er det du faktisk ønsker.
Å kjenne det eksakte falsy settet forhindrer subtile bugs — spesielt ved å sikre tall (if (count > 0) ikke if (count)) og velge ?? kontra || for standardverdier.