Trong ngữ cảnh boolean (một if, &&, ||, !), mọi giá trị được coi là truthy hoặc falsy. Có chính xác 8 giá trị falsy — mọi thứ khác đều là truthy.
Các giá trị falsy: , , , (BigInt zero), (chuỗi rỗng), , , .
Trong ngữ cảnh boolean (một if, &&, ||, !), mọi giá trị được coi là truthy hoặc falsy. Có chính xác 8 giá trị falsy — mọi thứ khác đều là truthy.
Các giá trị falsy: , , , (BigInt zero), (chuỗi rỗng), , , .
false0-00n""nullundefinedNaNif ("") {} // bỏ qua — chuỗi rỗng là falsy
if (0) {} // bỏ qua
if ("0") {} // CHẠY — chuỗi không rỗng là truthy!
if ([]) {} // CHẠY — mảng rỗng là truthy!
if ({}) {} // CHẠY — object rỗng là truthy!
Những điều bất ngờ: "0", [], và {} đều là truthy, mặc dù chúng cảm giác "rỗng."
const name = input || "guest"; // ❌ nếu input là "" hoặc 0, sẽ quay về "guest"
const count = input ?? 0; // ✅ ?? chỉ quay về mặc định khi null/undefined
|| quay về mặc định cho bất kỳ giá trị falsy nào, nên một 0 hoặc "" hợp lệ sẽ bị thay thế. Toán tử nullish coalescing ?? chỉ quay về mặc định cho null/undefined, đó thường là điều bạn thực sự muốn.
Biết chính xác tập hợp falsy giúp ngăn các lỗi tinh vi — đặc biệt khi bảo vệ các số (if (count > 0) chứ không phải if (count)) và chọn ?? so với || cho giá trị mặc định.