So sánh và Toán tử logic trong JavaScript là các công cụ quan trọng để kiểm tra giá trị và logic của các biến hoặc giá trị. Chúng được sử dụng trong nhiều loại cấu trúc điều khiển, chẳng hạn như câu lệnh if
, else
, switch
, và vòng lặp for
, while
, do-while
.
Toán tử so sánh:
- Toán tử so sánh được sử dụng trong các câu lệnh logic để xác định sự giống nhau hoặc khác nhau giữa các biến hoặc giá trị.
- Bảng sau giải thích các toán tử so sánh với ví dụ giả sử
x = 5
:
Toán tử | Mô tả | Ví dụ |
---|---|---|
== | Kiểm tra sự bằng nhau | x == 8 trả về false |
x == 5 trả về true | ||
x == "5" trả về true (kiểm tra giá trị không cần xét kiểu) | ||
=== | Kiểm tra sự bằng nhau về cả giá trị và kiểu | x === 5 trả về true |
x === "5" trả về false | ||
!= | Kiểm tra sự khác nhau | x != 8 trả về true |
!== | Kiểm tra sự khác nhau về cả giá trị và kiểu | x !== 5 trả về false |
x !== "5" trả về true | ||
x !== 8 trả về true | ||
> | Kiểm tra lớn hơn | x > 8 trả về false |
< | Kiểm tra nhỏ hơn | x < 8 trả về true |
>= | Kiểm tra lớn hơn hoặc bằng | x >= 8 trả về false |
<= | Kiểm tra nhỏ hơn hoặc bằng | x <= 8 trả về true |
Ví dụ sử dụng:
if (age < 18) {
text = "Too young to buy alcohol";
}
Toán tử logic:
- Toán tử logic được sử dụng để xác định logic giữa các biến hoặc giá trị.
- Bảng sau giải thích các toán tử logic với ví dụ giả sử
x = 6
vày = 3
:
Toán tử | Mô tả | Ví dụ |
---|---|---|
&& | Kiểm tra điều kiện “và” | (x < 10 && y > 1) trả về true |
` | ` | Kiểm tra điều kiện “hoặc” |
! | Kiểm tra điều kiện “không” | !(x == y) trả về true |
Toán tử ba ngôi:
- JavaScript cũng có một toán tử ba ngôi gán giá trị cho một biến dựa trên một điều kiện.
- Cú pháp:
variableName = (condition) ? value1 : value2;
Ví dụ:
let voteable = (age < 18) ? "Too young" : "Old enough";
So sánh các kiểu dữ liệu khác nhau:
- So sánh dữ liệu của các kiểu khác nhau có thể dẫn đến kết quả bất ngờ.
- Khi so sánh một chuỗi với một số, JavaScript sẽ cố gắng chuyển đổi chuỗi thành số. Chuỗi rỗng được chuyển đổi thành 0. Chuỗi không phải số được chuyển đổi thành
NaN
(giá trị not-a-number) luôn bằngfalse
.
Ví dụ:
2 < "12" // true (kiểu số được ưu tiên)
2 < "John" // false (chuỗi được chuyển thành NaN)
2 > "John" // false (chuỗi được chuyển thành NaN)
2 == "John" // false (kiểu khác nhau)
"2" < "12" // false (so sánh từng ký tự)
"2" > "12" // true (so sánh từng ký tự)
"2" == "12" // false (kiểu khác nhau)
Để đảm bảo kết quả chính xác, bạn nên chuyển đổi các biến sang kiểu thích hợp trước khi so sánh:
age = Number(age);
if (isNaN(age)) {
voteable = "Input is not a number";
} else {
voteable = (age < 18) ? "Too young" : "Old enough";
}
Toán tử Nullish Coalescing (??):
- Toán tử
??
trả về đối số thứ nhất nếu nó không phảinull
hoặcundefined
. - Nếu không, nó sẽ trả về đối số thứ hai.
Ví dụ:
let name = null;
let text = "missing";
let result = name ?? text; // "missing"
name = "John";
result = name ?? text; // "John"
Toán tử Optional Chaining (?.):
- Toán tử
?.
trả về giá trị của thuộc tính hoặc phương thức nếu đối tượng không phảiundefined
hoặcnull
. - Nếu đối tượng là
undefined
hoặcnull
, toán tử sẽ trả vềundefined
.
Ví dụ:
const car = {
type: "Fiat",
model: "500",
color: "white",
};
const name = car?.name; // "500"
const speed = car?.engine?.speed; // undefined
Kết luận:
- Toán tử so sánh và logic được sử dụng để kiểm tra giá trị và logic của các biến hoặc giá trị.
- Toán tử ba ngôi được sử dụng để gán giá trị cho một biến dựa trên một điều kiện.
- Toán tử Nullish Coalescing trả về đối số thứ nhất nếu nó không phải
null
hoặcundefined
. - Toán tử Optional Chaining trả về giá trị của thuộc tính hoặc phương thức nếu đối tượng không phải
undefined
hoặcnull
.