Javascript Basic | Truthy và Falsy Là Gì? Các Giá Trị Khi Chuyển Đổi Sang Boolean | 2.6

Xem thêm
Lập Trình JavaScript Cơ Bản | Basic JavaScript programming

Trong JavaScript, một số giá trị có thể được chuyển đổi (convert) sang giá trị Boolean. Quy tắc chung là giá trị đó được coi là true khi nó "truthy" và false khi nó "falsy". Dưới đây là một số giá trị phổ biến và quy tắc chuyển đổi:

Giá trị "Truthy" (được coi là true):

  1. Số khác 0:
    Boolean(42); // true
    Boolean(-1); // true
    
  2. Chuỗi không rỗng:
    Boolean("Hello"); // true
    
  3. Mảng và đối tượng:
    Boolean([]);    // true
    Boolean({});    // true
    
  4. Các giá trị đặc biệt:
    Boolean(true);   // true
    Boolean("true"); // true
    

Giá trị "Falsy" (được coi là false):

  1. (Số không) 0 :
    Boolean(0);      // false
    
  2. (Chuỗi rỗng) '' or "":
    Boolean("");     // false
    
  3. Giá trị nullundefined:
    Boolean(null);   // false
    Boolean(undefined); // false
    
  4. NaN (Not a Number):
    Boolean(NaN);    // false
    
  5. Giá trị false:
    Boolean(false);  // false
    
Chuyển đổi sang giá trị Boolean thường xuyên được thực hiện tự động trong các bối cảnh so sánh và điều kiện trong JavaScript, như trong câu lệnh điều kiện (if, while, v.v.). Ví dụ:
if (value) {
  // Thực hiện nếu value là truthy
} else {
  // Thực hiện nếu value là falsy
}
Trong trường hợp không rõ, bạn cũng có thể sử dụng hàm Boolean() để chuyển đổi giá trị sang kiểu Boolean một cách rõ ràng:
let result = Boolean(value);

Tổng kết

Trong Javascript có 6 giá trị sau được coi 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

Ngoài 6 giá trị đã đề cập tới ở phần Falsy thì toàn bộ các giá trị khác đều là Truthy, kể cả những giá trị sau:

  1. '0' (một chuỗi chứa số không)
  2. ' ' (một chuỗi chứa dấu cách)
  3. 'false' (một chuỗi chứa từ khóa false)
  4. [] (một array trống)
  5. {} (một object trống)
  6. function(){} (một hàm "trống")
Một số người chuyển từ ngôn ngữ khác sang rất có thể sẽ bị nhầm [] (mảng "rỗng") là falsy, bởi vì trong ngôn ngữ họ đã học trước đó [] là falsy.

Với những người hiểu nhầm [] là falsy sẽ gặp trường hợp khó hiểu sau:

Ví dụ:

var cars = [] // Dù là mảng "rỗng" vẫn là truthy

if (!cars) {
    // Họ sẽ thắc mắc: "Tại sao lại không lọt vào đây?"
}

 [] là truthy nên !cars sẽ trả về false. Câu lệnh if sẽ nhận được kết quả của mệnh đề so sánh là false, vì vậy đoạn mã trong if trên sẽ không được lọt vào.

Nhận xét

Mới hơn Cũ hơn