JS Booleans
29/07/2019
Trong lập trình, Bạn sẽ cần một kiểu dữ liệu chỉ chứa 2 giá trị như:
- YES/ NO
- ON / OFF
- TRUE / FALSE
Vì vậy, Javascript sinh ra kiểu dữ liệu Boolean. Javascript Boolean có 2 giá trị: true và false.
Boolean() function
Bạn có thể sử dụng hàm Boolean() để tìm kết quả của một biểu thức (hoặc một biến) là true hay không?
Boolean(10 > 9) // Kết quả là: true
Hoặc :
(10 > 9) // Kết quả là: true
10 > 9 // Kết quả là: true
So sánh và điều kiện
Bảng ví dụ:
Toán tử | Mô tả | Example |
---|---|---|
== | So sánh bằng | if (day == "Monday") |
> | Lớn hơn | if (salary > 9000) |
< | Nhỏ hơn | if (age < 18) |
Giá trị Boolean của một biểu thức là cơ sở cho tất cả các so sánh và điều kiện trong JavaScript. Phần này sẽ được nói rõ hơn ở các bài học sau.
Mọi thứ có giá trị luôn TRUE
var b1 = Boolean(100); // 100 là true
var b2 = Boolean(3.14); // 3.14 là true
var b3 = Boolean(-15); // -15 là true
var b4 = Boolean("Hello"); // Một string (không phải chuỗi rỗng) là true
var b5 = Boolean('false'); // Kể cả string 'false' cũng là true
var b6 = Boolean(1 + 7 + 3.14); // Biểu thức (không phải số 0) là true
Mọi thứ không có giá trị là FALSE
Boolean của số 0 là false:
var x = 0;
Boolean(x); // Kết quả: false
var x = -0;
Boolean(x); // Kết quả: false
Boolean của chuỗi rỗng là false:
var x = "";
Boolean(x); // Kết quả: false
Boolean của undefined là false:
var x;
Boolean(x); // Kết quả: false
Boolean của null là false:
var x = null;
Boolean(x); // Kết quả: false
Boolean của false là false:
var x = false;
Boolean(x); // Kết quả: false
Boolean của NaN là false:
var x = 10 / "H";
Boolean(x); // Kết quả: false
Boolean có thể là Object
Thông thường JavaScript booleans là các giá trị nguyên thủy được tạo từ chữ:
var x = false;
Nhưng booleans cũng có thể được định nghĩa như là object với từ khóa new:
var y = new Boolean(false);
var x = false;
var y = new Boolean(false);
// typeof x là boolean
// typeof y là object
Không nên tạo Boolean là object. Nó làm chậm tốc độ thực thi và cho ra nhiều kết quả không mong muốn :
Khi sử dụng toán tử ==, thì kết quả là bằng nhau:
var x = false;
var y = new Boolean(false);
// (x == y) là true vì x và y bằng nhau về giá trị
Khi sử dụng toán tử ===, thì kết quả là không bằng nhau vì kiểu dữ liệu nó khác nhau :
var x = false;
var y = new Boolean(false);
// (x === y) là false vì x và y bằng nhau về giá trị, nhưng khác kiểu dữ liệu
Hoặc tệ hơn, không thể so sánh 2 object:
var x = new Boolean(false);
var y = new Boolean(false);
// (x == y) là false vì object không thể so sánh