Σε ένα boolean context (if, &&, ||, !), κάθε τιμή αντιμετωπίζεται ως είτε αληθευτική είτε ψευδής. Υπάρχουν ακριβώς 8 ψευδείς τιμές — ό,τι άλλο είναι αληθευτικό.
Οι ψευδείς τιμές: , , , (BigInt μηδέν), (κενό string), , , .
Σε ένα boolean context (if, &&, ||, !), κάθε τιμή αντιμετωπίζεται ως είτε αληθευτική είτε ψευδής. Υπάρχουν ακριβώς 8 ψευδείς τιμές — ό,τι άλλο είναι αληθευτικό.
Οι ψευδείς τιμές: , , , (BigInt μηδέν), (κενό 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!
Οι εκπλήξεις: "0", [] και {} είναι όλες αληθευτικές, ακόμα και αν μοιάζουν "κενές".
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
Το || επιστρέφει σε fallback για οποιαδήποτε ψευδή τιμή, οπότε ένα έγκυρο 0 ή "" αντικαθίσταται. Ο τελεστής nullish coalescing ?? επιστρέφει σε fallback μόνο για null/undefined, το οποίο είναι συνήθως αυτό που θέλεις.
Γνώση του ακριβούς συνόλου ψευδών τιμών αποτρέπει λεπτά bugs — ειδικά την προστασία αριθμών (if (count > 0) όχι if (count)) και την επιλογή ?? έναντι || για προεπιλογές.