Khi một giá trị được dùng ở ngữ cảnh boolean (if, !, &&, ||, toán tử ba ngôi), JS ép nó về true hoặc false. Giá trị ép thành false gọi là falsy, còn lại là truthy.
Chỉ có 8 giá trị falsy (nhớ hết là đủ):
false0,-0,0n(BigInt zero)''(chuỗi rỗng)nullundefinedNaN
Mọi giá trị khác đều truthy — kể cả những cái dễ nhầm: '0' (chuỗi), 'false' (chuỗi), [] (mảng rỗng), {} (object rỗng), và hàm.
Bẫy thường gặp: if (arr.length) đúng, nhưng if (arr) luôn true kể cả mảng rỗng. Kiểm tra số 0 hợp lệ thì đừng dùng if (count) (sẽ trượt 0) — dùng if (count != null) hoặc kiểm tra rõ ràng.