Dalam konteks boolean (a if, &&, ||, !), setiap nilai dianggap sebagai truthy atau falsy. Ada tepat 8 nilai falsy — segalanya yang lain adalah truthy.
Nilai-nilai falsy: , , , (BigInt zero), (empty string), , , .
Dalam konteks boolean (a if, &&, ||, !), setiap nilai dianggap sebagai truthy atau falsy. Ada tepat 8 nilai falsy — segalanya yang lain adalah truthy.
Nilai-nilai 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!
Kejutan: "0", [], dan {} semuanya truthy, meskipun terasa "kosong."
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
|| jatuh kembali untuk nilai falsy apa pun, jadi 0 atau "" yang valid diganti. Operator nullish coalescing ?? jatuh kembali hanya untuk null/undefined, yang biasanya adalah apa yang benar-benar Anda inginkan.
Mengetahui set falsy yang tepat mencegah bug yang halus — terutama melindungi angka (if (count > 0) bukan if (count)) dan memilih ?? vs || untuk nilai default.