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.allchuyển sang boolean sẽ làfalsedocument.allkhi là toán hạng của toán tử so sánh==hoặc!=sẽ làundefined- Khi
typeof document.allsẽ 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
You must be logged in to post a comment.