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ị
null
và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:
false
0
(số không)''
or""
(chuỗi rỗng)null
undefined
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:
'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