Në një kontekst boolean (një if, &&, ||, !), çdo vlerë trajtohet si truthy ose falsy. Ka saktësisht 8 vlera falsy — gjithçka tjetër është truthy.
Vlerat falsy: , , , (BigInt zero), (string bosh), , , .
Në një kontekst boolean (një if, &&, ||, !), çdo vlerë trajtohet si truthy ose falsy. Ka saktësisht 8 vlera falsy — gjithçka tjetër është truthy.
Vlerat falsy: , , , (BigInt zero), (string bosh), , , .
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!
Surprizat: "0", [] dhe {} janë të gjitha truthy, edhe pse duken "boshe".
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
|| kthehet për çdo vlerë falsy, kështu që një 0 ose "" i vlefshëm zëvendësohet. Operatori nullish coalescing ?? kthehet vetëm për null/undefined, i cili zakonisht është ajo që vërtet dëshiron.
Dija e grupit të saktë falsy parandalon bug-e delikate — veçanërisht mbrojta e numrave (if (count > 0) jo if (count)) dhe zgjedhja e ?? ndaj || për vlerat e paracaktuara.