Truthy là gì?
Ví dụ:
console.log(Boolean(2)) // true
console.log(Boolean([‘PHP’])) // true
console.log(Boolean({ sex: ‘male’ })) // true
console.log(!!’hello’) // true
Toán tử ! là toán tử phủ định (not)
Toán tử !! là 2 lần phủ định, sẽ thành khẳng định.
Trong ngôn ngữ lập trình JavaScript, ! và !! thường dùng để chuyển đổi mọi kiểu dữ liệu khác sang kiểu dữ liệu Boolean.
Ví dụ: thêm !! phía trước các giá trị truthy sẽ luôn trả về true.
console.log(!!2) // true
console.log(!!Hanoi) // true
console.log(!![‘Hello’]) // true
truthy-va-falsy-trong-lap-trinh-javascript-la-gi
Falsy là gì?
Ví dụ:
Trong Javascript có 6 giá trị sau được gọi là Falsy:
- false
- 0 (số không)
- ” or “” (chuỗi rỗng)
- null
- undefined
- NaN
Ví dụ:
Lưu ý quan trọng về các Falsy để không bị nhầm lẫn
Từ khóa false khác với chuỗi chứa từ khóa false ‘false’
Số 0 khác với chuỗi chứa số 0 ‘0’
Chuỗi rỗng ” khác với chuối chứa dấu cách ‘ ‘
Một [] array trống không phải là false
Một {} object trống không phải là false
Một function() {} (hàm trống) không phải là false
Hay nói cách khác, các giá trị trên vẫn cho kết quả là true, nên được gọi là Truthy
console.log('false') // true
console.log(' ') // true
console.log(" ") // true
console.log('0') // true
console.log([]) // true Một số ngôn ngữ lập trình khác thì []
(mảng “rỗng”) lại là falsy.
console.log({}) // true
console.log(function(){}) // true
Ngoại lệ – document.all
Trong ngôn ngữ lập trình Javascript (phía trình duyệt) có sẵn một đối tượng document
, khi console.log(!!document.all)
sẽ trả về false
.
Như vậy document.all
cũng là falsy
Tham khảo Google search “Why document.all is falsy?” để có câu trả lời.
Tóm tắt câu trả lời:
document.all
là một ngoại lệ chính thức duy nhất theo đặc tả ECMA (phiên bản 5). Đặc tả này mô tả toàn bộ các object khi chuyển sang boolean sẽ là true
. Tuy nhiên, có một ngoại lệ với document.all
là false, nên document.all được gọi là falsy.
Cụ thể như sau:
document.all
chuyển sang boolean sẽ làfalse
document.all
khi là toán hạng của toán tử so sánh==
hoặc!=
sẽ làundefined
- Khi
typeof document.all
sẽ trả về"undefined"
ECMA là đặc tả chi tiết kỹ thuật mà các ngôn ngữ theo đặc tả này phải tuân theo. Javascript là một ngôn ngữ tuân thủ đặc tả kỹ thuật ECMA.
Nguồn tham khảo F8
Có thể bạn quan tâm: thiết kế website wordpress
Leave A Comment