Falsy là giá trị bị coi là false khi đưa vào ngữ cảnh boolean.
Có đúng 8 giá trị, học thuộc là đủ:
javascript
false, 0, -0, 0n, '', null, undefined, NaNMọi thứ còn lại đều truthy — kể cả những thứ trông như "rỗng":
javascript
Boolean('0') // true — chuỗi có nội dung
Boolean('false') // true
Boolean([]) // true — mảng rỗng vẫn là object
Boolean({}) // true
Boolean(-1) // true
Boolean(' ') // true — khoảng trắng vẫn là ký tựLưu ý — số 0 và chuỗi rỗng là giá trị hợp lệ:
javascript
function render(count) {
if (!count) return 'Chưa có' // count = 0 rơi vào đây, dù 0 là đáp án đúng
}
// đúng hơn:
if (count == null) return 'Chưa có'Cùng lý do đó, || để đặt giá trị mặc định là nguy hiểm:
javascript
const limit = input || 20 // input = 0 → thành 20, SAI
const limit = input ?? 20 // chỉ thay khi null/undefined, ĐÚNGChốt: ?? và ?. sinh ra chính là để xử lý nhóm bẫy này — nêu được liên hệ đó là điểm cộng.