Într-un context boolean (un if, &&, ||, !), fiecare valoare este tratată ca fiind truthy sau falsy. Există exact 8 valori falsy — totul celălalt este truthy.
Valorile falsy: , , , (BigInt zero), (string gol), , , .
Într-un context boolean (un if, &&, ||, !), fiecare valoare este tratată ca fiind truthy sau falsy. Există exact 8 valori falsy — totul celălalt este truthy.
Valorile falsy: , , , (BigInt zero), (string gol), , , .
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!
Surprizele: "0", [] și {} sunt toate truthy, deși par "goale".
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
|| revine pentru orice valoare falsy, deci un 0 sau "" valid este înlocuit. Operatorul nullish coalescing ?? revine doar pentru null/undefined, ceea ce este de obicei ceea ce chiar dorești.
Cunoașterea setului exact de falsy previne bug-uri subtile — în special protejarea numerelor (if (count > 0) nu if (count)) și alegerea ?? versus || pentru valori implicite.