Comparison & Logical Operators
Comparison Operators | Toán tử so sánh
Phần tiêu đề “Comparison Operators | Toán tử so sánh”So sánh hai giá trị và trả về true hoặc false.
| Toán tử | Ý nghĩa | Ví dụ | Kết quả |
|---|---|---|---|
== | Bằng (so sánh lỏng) | 5 == "5" | true |
=== | Bằng (so sánh chặt) | 5 === "5" | false |
!= | Khác (so sánh lỏng) | 5 != "5" | false |
!== | Khác (so sánh chặt) | 5 !== "5" | true |
> | Lớn hơn | 7 > 3 | true |
< | Nhỏ hơn | 3 < 5 | true |
>= | Lớn hơn hoặc bằng | 5 >= 5 | true |
<= | Nhỏ hơn hoặc bằng | 4 <= 2 | false |
== vs === (Loose vs Strict)
Phần tiêu đề “== vs === (Loose vs Strict)”Ép kiểu trước khi so sánh — có thể gây bất ngờ:
5 == "5"; // true (string → number)0 == false; // true (false → 0)"" == false; // true ("" → 0, false → 0)null == undefined; // true (quy tắc đặc biệt)null == 0; // false (null chỉ == undefined)Không ép kiểu — phải cùng kiểu VÀ cùng giá trị:
5 === "5"; // false (khác kiểu)0 === false; // false"" === false; // falsenull === undefined; // falseNaN === NaN; // false ← đặc biệt!So sánh chuỗi
Phần tiêu đề “So sánh chuỗi”Chuỗi được so sánh theo thứ tự Unicode (từng ký tự):
"a" < "b"; // true (97 < 98)"abc" < "abd"; // true"a" < "B"; // false (97 > 66) — viết hoa có mã nhỏ hơn!"10" < "9"; // true — so sánh string, không phải number!Logical Operators | Toán tử logic
Phần tiêu đề “Logical Operators | Toán tử logic”Làm việc với giá trị boolean hoặc “truthy/falsy”.
| Toán tử | Ý nghĩa | Ví dụ | Kết quả |
|---|---|---|---|
&& | AND (và) | true && false | false |
|| | OR (hoặc) | true || false | true |
! | NOT (phủ định) | !true | false |
Short-circuit Evaluation
Phần tiêu đề “Short-circuit Evaluation”Trả về giá trị falsy đầu tiên, hoặc giá trị cuối nếu tất cả truthy:
true && "hello"; // "hello"false && "hello"; // false (dừng ngay)0 && "hello"; // 0
// Ứng dụng: chạy code khi điều kiện đúnguser && user.save();Trả về giá trị truthy đầu tiên, hoặc giá trị cuối nếu tất cả falsy:
"" || "Guest"; // "Guest"0 || 42; // 42"hello" || "world"; // "hello"
// Ứng dụng: giá trị mặc địnhlet name = input || "Guest";Chỉ trả vế phải khi vế trái là null/undefined — không gộp 0, "", false:
0 || 10; // 10 ← sai nếu 0 là giá trị hợp lệ0 ?? 10; // 0 ← đúng!
null ?? "default"; // "default"undefined ?? "default"; // "default"false ?? "default"; // false (không phải null/undefined)Bảng chân trị
Phần tiêu đề “Bảng chân trị”| A | B | A && B |
|---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
| A | B | A || B |
|---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
| A | !A |
|---|---|
true | false |
false | true |
Conditional Operator | Toán tử điều kiện
Phần tiêu đề “Conditional Operator | Toán tử điều kiện”Toán tử điều kiện (ternary) cho phép viết ngắn gọn câu lệnh if–else dưới dạng biểu thức.
Cú pháp
Phần tiêu đề “Cú pháp”điều_kiện ? giá_trị_nếu_đúng : giá_trị_nếu_sai;Ví dụ
Phần tiêu đề “Ví dụ”let age = 20;let access = (age >= 18) ? "Được phép" : "Từ chối";console.log(access); // "Được phép"// React JSX — dùng ternary để render có điều kiệnreturn ( <div> {isLoggedIn ? <Dashboard /> : <Login />} </div>);// ❌ Khó đọcconst grade = score >= 90 ? "A" : score >= 80 ? "B" : score >= 70 ? "C" : "F";
// ✅ Nên dùng if...else hoặc object lookupTóm tắt
Phần tiêu đề “Tóm tắt”| Nhóm | Toán tử chính | Ghi nhớ |
|---|---|---|
| So sánh | == === != !== > < >= <= | Luôn dùng === / !== |
| Logic | && || ! ?? | Short-circuit + nullish coalescing |
| Điều kiện | ? : | Chỉ cho biểu thức đơn giản |