Truthy là gì?

Trong ngôn ngữ lập trình JavaScript, giá trị nào khi chuyển đổi sang kiểu dữ liệu Boolean mà có giá trị true thì giá trị đó gọi là Truthy.

Ví dụ:

console.log(Boolean(2)) // true
console.log(Boolean([‘PHP’])) // true
console.log(Boolean({ sex: ‘male’ })) // true
console.log(!!’hello’) // true

Như vậy, các giá trị 2, [‘PHP’], { sex: ‘male’ },  ‘hello’ được gọi là Truthy.

Ghi chú  về ! và !!

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

truthy-va-falsy-trong-lap-trinh-javascript-la-gi

Falsy là gì?

Trong ngôn ngữ lập trình JavaScript, giá trị nào khi chuyển đổi sang kiểu dữ liệu Boolean mà có giá trị false thì giá trị đó gọi là Falsy.

Ví dụ:

Trong Javascript có 6 giá trị sau được gọi là Falsy:

  1. false
  2. 0 (số không)
  3. ” or “” (chuỗi rỗng)
  4. null
  5. undefined
  6. NaN

Ví dụ:

console.log(false) // false
console.log(0) // false
console.log('') // false
console.log(null) // false
console.log(undefined) // false
console.log(NaN) // false

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.allfalse, nên document.all được gọi là falsy.

Cụ thể như sau:

  1. document.all chuyển sang boolean sẽ là false
  2. document.all khi là toán hạng của toán tử so sánh == hoặc != sẽ là undefined
  3. 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

Thiet-ke-web-quang-cao-google-facebook-ha-noi

Thiet-ke-web-quang-cao-google-facebook-ha-noi