Xem thêmLậ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):
-
Số khác 0:
Boolean(42); // true Boolean(-1); // true -
Chuỗi không rỗng:
Boolean("Hello"); // true -
Mảng và đối tượng:
Boolean([]); // true Boolean({}); // true -
Các giá trị đặc biệt:
Boolean(true); // true Boolean("true"); // true
Giá trị "Falsy" (được coi là false):
-
(Số không)
0:Boolean(0); // false -
(Chuỗi rỗng)
''or"":Boolean(""); // false -
Giá trị
nullvàundefined:Boolean(null); // false Boolean(undefined); // false -
NaN(Not a Number):Boolean(NaN); // false -
Giá trị
false:Boolean(false); // false
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:
false0(số không)''or""(chuỗi rỗng)nullundefinedNaN
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:
'0'(một chuỗi chứa số không)' '(một chuỗi chứa dấu cách)'false'(một chuỗi chứa từ khóa false)[](một array trống){}(một object trống)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?"
}
Vì [] 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