Hãy tưởng tượng một tình huống gia đình bạn đang chuẩn bị cho bữa tối. Mẹ bạn quyết định: “Nếu hôm nay có cá và rau, chúng ta sẽ ăn cá kho”. Đây chính là ví dụ về toán tử Logical AND (
&&) trong JavaScript. Một bữa tối ngon miệng chỉ diễn ra nếu cả hai điều kiện (cá và rau) đều đúng. Tương tự, “Nếu hôm nay có cá hoặc rau, chúng ta sẽ ăn canh”. Đây là ví dụ của toán tử Logical OR (||). Bữa tối vẫn diễn ra ngon lành chỉ cần một trong hai điều kiện đúng.

1. Toán tử Logical
Toán tử logical trong lập trình JavaScript là các ký hiệu đặc biệt dùng để kết hợp các điều kiện logic. Chúng giúp xác định tính đúng hoặc sai của một hoặc nhiều điều kiện.
1.1 Toán tử AND (&&)
Trả về true nếu cả hai các biểu thức là true. Ví dụ: expr1 && expr2 trả về true nếu cả expr1 và expr2 đều true. Sử dụng trong các tình huống cần tất cả các điều kiện phải đúng. Ví dụ: Nếu nhiệt độ > 20 độ C và hôm nay là ngày nghỉ thì sẽ đi picnic.
Sử dụng trong các tình huống cần tất cả các điều kiện phải đúng.
Ví dụ: Nếu nhiệt độ > 20 độ C và hôm nay là ngày nghỉ thì sẽ đi picnic.
let temperature = 25; // Nhiệt độ 25 độ C
let dayOff = "Sunday"; // Ngày nghỉ là Chủ nhật
let today = "Sunday"; // Ngày hôm nay
if (temperature > 20 && today === dayOff) {
console.log("Đi picnic!");
} else {
console.log("Ở nhà!");
}
// Kết quả: Đi picnic!
Cách viết khác:
let temperature = 25; // Nhiệt độ 25 độ C
let dayOff = "Sunday"; // Ngày nghỉ là Chủ nhật
let today = "Sunday"; // Ngày hôm nay
// Tách thành biến giúp code có ý nghĩa hơn
let isWeatherGood = temperature > 20;
let hasFreeTime = today === dayOff;
if (isWeatherGood && hasFreeTime) {
console.log("Đi picnic!");
} else {
console.log("Ở nhà!");
}
// Kết quả: Đi picnic!
1.2 Toán tử OR (||)
Trả về true nếu ít nhất một trong các biểu thức là true. Ví dụ: expr1 || expr2 trả về true nếu expr1 hoặc expr2 là true.
Thường dùng khi chỉ cần một trong các điều kiện đúng.
Ví dụ:
let isComedyAvailable = true; // Có phim hài
let isActionAvailable = false; // Không có phim hành động
if (isComedyAvailable || isActionAvailable) {
console.log("Xem phim vui vẻ!");
} else {
console.log("Chọn hoạt động khác!");
}
// Kết quả: Xem phim vui vẻ!
1.3 Toán tử NOT (!)
Toán tử ! được sử dụng để phủ định một điều kiện, biến true thành false và ngược lại.
Ví dụ: !expr trả về false nếu expr là true.
Dùng để đảo ngược giá trị logic của một biểu thức.
Ví dụ: Nếu không thích mèo, thì in ra “Không thích mèo!”.
let isCatLover = false;
if (!isCatLover) {
console.log("Không thích mèo!");
}
// Kết quả: Không thích mèo!2. Kết hợp nhiều toán tử Logical
2.1 Kết hợp toán tử AND (&&)
Tình huống: Kiểm tra xem một người có đủ điều kiện tham gia một khóa học lập trình không. Điều kiện bao gồm: đủ tuổi (trên 16 tuổi), có kiến thức cơ bản về máy tính, và đã đăng ký trước.
Ví dụ:
let age = 17;
let hasBasicComputerSkills = true;
let isRegistered = true;
if (age > 16 && hasBasicComputerSkills && isRegistered) {
console.log("Đủ điều kiện tham gia khóa học");
} else {
console.log("Không đủ điều kiện");
}
// Kết quả: Đủ điều kiện tham gia khóa học
2.2 Kết hợp toán tử OR (||)
Tình huống: Một ứng dụng streaming phim cho phép truy cập nếu người dùng là thành viên VIP, có mã quà tặng, hoặc đã thanh toán phí đăng ký.
Ví dụ:
let isVipMember = false;
let hasGiftCode = true;
let hasPaidSubscription = false;
if (isVipMember || hasGiftCode || hasPaidSubscription) {
console.log("Truy cập nội dung VIP");
} else {
console.log("Không thể truy cập nội dung VIP");
}
// Kết quả: Truy cập nội dung VIP
2.3 Kết hợp toán tử AND và OR
Tình huống: Một người dùng sẽ đủ điều kiện nhận quà khi vừa đăng ký mới (điều kiện A) HOẶC là thành viên VIP (điều kiện B), và đã mua hàng trên 500.000đ (điều kiện C).
Ví dụ:
let isNewUser = true;
let isVipMember = false;
let purchaseAmount = 600000;
if ((isNewUser || isVipMember) && purchaseAmount > 500000) {
console.log("Đủ điều kiện nhận quà");
} else {
console.log("Không đủ điều kiện");
}
// Kết quả: Đủ điều kiện nhận quà
3. Lỗi thường gặp
3.1 Không nắm được độ ưu tiên giữa các toán tử
Khi kết hợp toán tử AND (&&) và OR (||) có thể dẫn đến kết quả không mong muốn do thứ tự ưu tiên của các phép toán không được kiểm soát chính xác.
3.2 Dùng nhầm toán tử & hoặc | thay vì && và ||
Đây là một nhầm lẫn phổ biến đối với người mới học lập trình. Điều này có thể dẫn đến kết quả không mong muốn vì & và | hoạt động ở cấp độ bit.
Tóm tắt
- Toán tử Logical trong JavaScript: Toán tử logical được sử dụng để kết hợp các điều kiện logic, quyết định tính đúng sai của các biểu thức.
- Toán tử AND (
&&): Trả vềtruekhi tất cả các biểu thức làtrue. Dùng trong tình huống cần mọi điều kiện đều đúng. - Toán tử OR (
||): Trả vềtruenếu ít nhất một biểu thức làtrue. Dùng khi chỉ cần một trong các điều kiện đúng. - Toán tử NOT (
!): Phủ định giá trị logic của biểu thức, biếntruethànhfalsevà ngược lại.
- Toán tử AND (
- Ví dụ thực tế:
- Ví dụ với AND:
if (temperature > 20 && today === dayOff) { console.log("Đi picnic!"); }- Điều kiện cho việc đi picnic là nhiệt độ trên 20 độ và là ngày nghỉ. - Ví dụ với OR:
if (isComedyAvailable || isActionAvailable) { console.log("Xem phim vui vẻ!"); }- Có thể xem phim nếu có phim hài hoặc phim hành động. - Ví dụ với NOT:
if (!isCatLover) { console.log("Không thích mèo!"); }- In ra “Không thích mèo!” nếu không phải là người yêu mèo.
- Ví dụ với AND:
- Kết hợp nhiều toán tử:
- AND và OR cùng lúc:
if ((isNewUser || isVipMember) && purchaseAmount > 500000) { console.log("Đủ điều kiện nhận quà"); }- Đủ điều kiện nhận quà nếu là người dùng mới hoặc thành viên VIP và đã mua hàng trên 500.000đ. - Chú ý về độ ưu tiên: Sử dụng ngoặc đơn
()để nhóm các biểu thức cần ưu tiên thực hiện trước.
- AND và OR cùng lúc:
- Độ ưu tiên của toán tử Logical:
- Toán tử NOT (
!) có độ ưu tiên cao hơn toán tử AND (&&). Toán tử AND (&&) có độ ưu tiên cao hơn so với OR (||). - Trong biểu thức kết hợp nhiều toán tử Logical, phần được xử lý trước sẽ tuân theo thứ tự ưu tiên này.
- Để đảm bảo logic chính xác, sử dụng dấu ngoặc đơn
()để xác định rõ ràng thứ tự thực hiện các biểu thức.
- Toán tử NOT (
- Lỗi thường gặp:
- Nhầm lẫn về độ ưu tiên: Cần chú ý đến thứ tự ưu tiên khi kết hợp nhiều toán tử.
- Dùng nhầm
&/|thay cho&&/||:&và | là toán tử bit-level, có hành vi khác&&và||, nó thường hiếm khi được sử dụng với lập trình ứng dụng như lập trình web.