ლოგიკური კონტექსტში (ა if, &&, ||, !), ყველა მნიშვნელობა განიხილება როგორც truthy ან falsy. არსებობს ზუსტად 8 falsy მნიშვნელობა — ყველა სხვა truthy-ია.
falsy მნიშვნელობები: , , , (BigInt zero), (empty string), , , .
ლოგიკური კონტექსტში (ა if, &&, ||, !), ყველა მნიშვნელობა განიხილება როგორც truthy ან falsy. არსებობს ზუსტად 8 falsy მნიშვნელობა — ყველა სხვა truthy-ია.
falsy მნიშვნელობები: , , , (BigInt zero), (empty 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", [] და {} ყველა truthy-ია, მიუხედავად იმისა, რომ "ცარიელები" ჩანან.
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
|| უკან ბრუნდება ნებისმიერი falsy მნიშვნელობისთვის, ამიტომ valid 0 ან "" იცვლება. nullish coalescing ოპერატორი ?? უკან ბრუნდება მხოლოდ null/undefined-ისთვის, რაც ჩვეულებრივ სწორად გსურთ.
ზუსტი falsy ნაკრების ცოდნა ხელს უშლის დახვეწილ bugs-ებს — განსაკუთრებით რიცხვების დაცვა (if (count > 0) და არა if (count)) და ?? vs || არჩევა defaults-ებისთვის.