Toán tử so sánh và logic trong JavaScript

Javascript căn bản | by Học Javascript

Trong lập trình JavaScript, toán tử đóng vai trò quan trọng trong việc xử lý dữ liệu và điều khiển luồng thực thi của chương trình. Hai nhóm toán tử quan trọng nhất là toán tử so sánhtoán tử logic, giúp lập trình viên kiểm tra điều kiện và kết hợp nhiều điều kiện lại với nhau.

Toán tử so sánh cho phép so sánh hai giá trị và trả về kết quả dạng Boolean (true hoặc false), trong khi toán tử logic giúp kết hợp nhiều điều kiện để kiểm tra tính đúng sai của biểu thức. Những toán tử này được sử dụng rộng rãi trong câu lệnh điều kiện (if...else), vòng lặp (for, while), kiểm tra dữ liệu đầu vào, xác thực biểu mẫu, xử lý trạng thái đăng nhập, và nhiều ứng dụng thực tế khác.

Hiểu rõ và sử dụng thành thạo toán tử so sánh và logic sẽ giúp bạn viết mã JavaScript hiệu quả, tối ưu và tránh các lỗi logic không mong muốn. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về các loại toán tử này, cách sử dụng, cũng như ứng dụng thực tế của chúng trong lập trình.

Toán tử trong JavaScript

Toán tử (operator) trong JavaScript là những ký hiệu đặc biệt dùng để thực hiện các phép toán trên các giá trị và biến. JavaScript cung cấp nhiều loại toán tử như:

  • Toán tử số học (+, -, *, /, %, **)
  • Toán tử gán (=, +=, -=, *=, /=, %=, **=)
  • Toán tử so sánh (==, ===, !=, !==, >, <, >=, <=)
  • Toán tử logic (&&, ||, !)
  • Toán tử bitwise, toán tử điều kiện, và nhiều loại khác.

Trong số đó, toán tử so sánh và toán tử logic đóng vai trò quan trọng trong việc xử lý điều kiện và điều hướng luồng thực thi của chương trình.

Tầm quan trọng của toán tử so sánh và toán tử logic

Toán tử so sánh

Toán tử so sánh giúp so sánh hai giá trị với nhau và trả về kết quả dạng Boolean (true hoặc false). Điều này cực kỳ hữu ích khi bạn cần kiểm tra điều kiện, chẳng hạn như:

  • So sánh số liệu để xác định xem một giá trị có lớn hơn, nhỏ hơn hoặc bằng một giá trị khác hay không.
  • Kiểm tra dữ liệu đầu vào của người dùng trong biểu mẫu.
  • Xác minh trạng thái của một biến trước khi thực hiện một hành động nào đó.

Ví dụ sử dụng toán tử so sánh:

let age = 18;
if (age >= 18) {
    console.log("Bạn đủ tuổi để đăng ký.");
} else {
    console.log("Bạn chưa đủ tuổi.");
}

Toán tử logic

Toán tử logic được sử dụng để kết hợp nhiều điều kiện và đưa ra quyết định dựa trên nhiều yếu tố. Ba toán tử logic phổ biến trong JavaScript là:

  • && (AND): Chỉ trả về true nếu cả hai điều kiện đều đúng.
  • || (OR): Trả về true nếu ít nhất một điều kiện đúng.
  • ! (NOT): Đảo ngược giá trị Boolean của điều kiện.

Ví dụ sử dụng toán tử logic:

let isMember = true;
let age = 20;

if (isMember && age >= 18) {
    console.log("Bạn có thể truy cập nội dung VIP.");
} else {
    console.log("Bạn không đủ điều kiện.");
}

Điều kiện (if...else), vòng lặp và các thao tác xử lý dữ liệu trong JavaScript

Sử dụng trong điều kiện (if...else)

Toán tử so sánh và logic thường được sử dụng để kiểm tra điều kiện trong câu lệnh if...else, giúp chương trình phản hồi một cách linh hoạt dựa trên dữ liệu đầu vào.

Ví dụ kiểm tra trạng thái đăng nhập:

let isLoggedIn = false;

if (!isLoggedIn) {
    console.log("Vui lòng đăng nhập để tiếp tục.");
} else {
    console.log("Chào mừng bạn quay trở lại!");
}

Sử dụng trong vòng lặp

Trong JavaScript, vòng lặp (for, while, do...while) sử dụng toán tử so sánh để xác định điều kiện tiếp tục thực thi.

Ví dụ: In ra các số từ 1 đến 5 bằng vòng lặp while:

let count = 1;
while (count <= 5) {
    console.log("Số: " + count);
    count++; // Tăng giá trị count sau mỗi lần lặp
}

Xử lý dữ liệu trong mảng và đối tượng

Toán tử so sánh và logic thường được sử dụng khi làm việc với dữ liệu trong mảng hoặc đối tượng.

Ví dụ: Lọc ra những số chẵn từ một mảng số nguyên:

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4, 6, 8, 10]

Toán tử so sánh trong JavaScript

Toán tử so sánh trong JavaScript được sử dụng để so sánh hai giá trị và trả về kết quả dạng Boolean (true hoặc false). Chúng giúp kiểm tra mối quan hệ giữa các giá trị và thường được sử dụng trong các câu lệnh điều kiện (if...else), vòng lặp (while, for), hoặc khi xử lý dữ liệu.

Ví dụ cơ bản về toán tử so sánh:

console.log(10 > 5);  // true
console.log(3 === 3); // true
console.log(4 != 4);  // false

Các toán tử so sánh phổ biến

Dưới đây là danh sách các toán tử so sánh trong JavaScript cùng với mô tả và ví dụ minh họa:

Toán tử Mô tả Ví dụ Kết quả
== So sánh bằng (không xét kiểu dữ liệu) 5 == "5" true
=== So sánh bằng (có xét kiểu dữ liệu) 5 === "5" false
!= So sánh khác (không xét kiểu dữ liệu) 5 != "5" false
!== So sánh khác (có xét kiểu dữ liệu) 5 !== "5" true
> Lớn hơn 10 > 5 true
< Nhỏ hơn 3 < 7 true
>= Lớn hơn hoặc bằng 8 >= 8 true
<= Nhỏ hơn hoặc bằng 6 <= 10 true

Ví dụ minh họa

So sánh số nguyên, chuỗi, kiểu dữ liệu

Toán tử so sánh có thể áp dụng với các kiểu dữ liệu khác nhau, bao gồm số nguyên, chuỗi và kiểu dữ liệu hỗn hợp.

Ví dụ:

console.log(10 > 5);       // true (10 lớn hơn 5)
console.log("apple" < "banana"); // true (so sánh theo thứ tự bảng chữ cái)
console.log(50 == "50");   // true (chỉ so sánh giá trị, không xét kiểu)
console.log(50 === "50");  // false (kiểu dữ liệu khác nhau: số và chuỗi)

So sánh không chặt (==) vs so sánh chặt (===)

JavaScript có hai loại so sánh bằng:

  • So sánh không chặt (==): So sánh giá trị mà không xét kiểu dữ liệu.
  • So sánh chặt (===): So sánh cả giá trị và kiểu dữ liệu.

Ví dụ:

console.log(5 == "5");   // true (vì "5" được chuyển thành số trước khi so sánh)
console.log(5 === "5");  // false (vì kiểu dữ liệu khác nhau: số và chuỗi)
console.log(null == undefined); // true (vì cả hai đều mang ý nghĩa "không có giá trị")
console.log(null === undefined); // false (do kiểu dữ liệu khác nhau)

So sánh khác (!=) vs khác chặt (!==)

  • !=: So sánh khác nhưng không xét kiểu dữ liệu.
  • !==: So sánh khác và có xét kiểu dữ liệu.

Ví dụ:

console.log(5 != "5");   // false (vì "5" được chuyển thành số, nên 5 == 5)
console.log(5 !== "5");  // true (vì kiểu dữ liệu khác nhau)
console.log(10 != 15);   // true (vì 10 khác 15)
console.log(10 !== 10);  // false (vì 10 hoàn toàn giống 10)

So sánh với các giá trị đặc biệt (NaN, null, undefined)

JavaScript có một số giá trị đặc biệt cần lưu ý khi sử dụng toán tử so sánh:

console.log(NaN == NaN);   // false (NaN không bao giờ bằng chính nó)
console.log(null == undefined); // true (cả hai cùng mang ý nghĩa "không có giá trị")
console.log(null === undefined); // false (do khác kiểu dữ liệu)
console.log(NaN !== NaN);  // true (vì NaN không bằng bất cứ giá trị nào, kể cả chính nó)
Lưu ý: Để kiểm tra xem một giá trị có phải là NaN hay không, hãy sử dụng isNaN(value).
Ví dụ:
console.log(isNaN(NaN));  // true
console.log(isNaN(5));    // false

Toán tử logic trong JavaScript

Toán tử logic trong JavaScript được sử dụng để kết hợp nhiều điều kiện lại với nhau, giúp kiểm tra và xử lý các trường hợp phức tạp hơn. Các toán tử logic luôn trả về giá trị Boolean (true hoặc false) dựa trên điều kiện được đánh giá.

Ví dụ đơn giản:

let isAdult = true;
let hasID = false;
console.log(isAdult && hasID);  // false (vì một điều kiện sai)

Các toán tử logic phổ biến

JavaScript cung cấp ba toán tử logic chính:

Toán tử Mô tả Ví dụ Kết quả
&& (AND) Trả về true nếu cả hai điều kiện đều đúng (5 > 3 && 10 > 5) true
` ` (OR) Trả về true nếu ít nhất một điều kiện đúng
! (NOT) Đảo ngược giá trị Boolean !true false

Ví dụ minh họa

Toán tử AND (&&)

  • Trả về true chỉ khi tất cả các điều kiện đều đúng.
  • Nếu bất kỳ điều kiện nào sai, kết quả sẽ là false.

Ví dụ:

console.log(true && true);  // true (vì cả hai điều kiện đều đúng)
console.log(true && false); // false (một điều kiện sai)
console.log(10 > 5 && 20 > 15); // true (cả hai điều kiện đều đúng)
console.log(5 > 3 && 10 < 2);   // false (vì 10 < 2 là sai)

Ứng dụng thực tế:

let age = 20;
let hasDrivingLicense = true;

if (age >= 18 && hasDrivingLicense) {
    console.log("Bạn có thể lái xe.");
} else {
    console.log("Bạn không đủ điều kiện lái xe.");
}

Giải thích: Người dùng chỉ được lái xe khi đủ 18 tuổi và có bằng lái.

Toán tử OR (||)

  • Trả về true nếu ít nhất một điều kiện đúng.
  • Chỉ trả về false khi tất cả các điều kiện đều sai.

Ví dụ:

console.log(true || false); // true (vì một điều kiện đúng)
console.log(false || false); // false (vì cả hai đều sai)
console.log(5 > 10 || 20 > 15); // true (vì 20 > 15 là đúng)

Ứng dụng thực tế:

let isWeekend = true;
let isHoliday = false;

if (isWeekend || isHoliday) {
    console.log("Bạn được nghỉ.");
} else {
    console.log("Hôm nay phải đi làm.");
}

Giải thích: Nếu hôm nay là cuối tuần hoặc ngày lễ, bạn được nghỉ.

Toán tử NOT (!)

  • Đảo ngược giá trị Boolean (true thành false và ngược lại).
  • Dùng để kiểm tra điều kiện ngược.

Ví dụ:

console.log(!true);  // false
console.log(!false); // true
console.log(!(5 > 3)); // false (vì 5 > 3 là true, nhưng `!` đảo ngược lại)

Ứng dụng thực tế:

let isLoggedIn = false;

if (!isLoggedIn) {
    console.log("Vui lòng đăng nhập.");
} else {
    console.log("Chào mừng bạn trở lại!");
}

Giải thích: Nếu người dùng chưa đăng nhập (!isLoggedIntrue), hiển thị thông báo yêu cầu đăng nhập.

Kết hợp toán tử so sánh và logic

Toán tử so sánh (>, <, ==, !=, ===, !==) thường được sử dụng chung với toán tử logic (&&, ||, !) để tạo ra các điều kiện phức tạp hơn.

Ví dụ:

let score = 85;
let attendance = 90;

// Điều kiện: Điểm số >= 80 và điểm chuyên cần >= 85
if (score >= 80 && attendance >= 85) {
    console.log("Bạn đạt loại giỏi.");
} else {
    console.log("Bạn chưa đạt loại giỏi.");
}

Ứng dụng thực tế của toán tử so sánh và logic trong JavaScript

Toán tử so sánh và toán tử logic được sử dụng rộng rãi trong JavaScript để kiểm tra điều kiện, kiểm soát luồng chương trình và xử lý dữ liệu. Dưới đây là một số ứng dụng thực tế quan trọng.

Điều kiện trong câu lệnh if...else

Toán tử so sánh và logic giúp kiểm tra điều kiện và quyết định luồng thực thi của chương trình.

Ví dụ: Kiểm tra độ tuổi hợp lệ để vào trang web

let age = 17;

if (age >= 18) {
    console.log("Bạn có thể truy cập trang web.");
} else {
    console.log("Bạn chưa đủ tuổi để truy cập trang web.");
}

Giải thích: Nếu age từ 18 trở lên, người dùng được phép truy cập, ngược lại sẽ bị từ chối.

Kiểm tra trạng thái đăng nhập

Trong các ứng dụng web, kiểm tra trạng thái đăng nhập là một trường hợp phổ biến của toán tử logic.

Ví dụ: Kiểm tra người dùng đã đăng nhập chưa

let isLoggedIn = false;

if (!isLoggedIn) {
    console.log("Vui lòng đăng nhập.");
} else {
    console.log("Chào mừng bạn trở lại!");
}

Giải thích: Nếu isLoggedInfalse, hiển thị thông báo yêu cầu đăng nhập.

Ví dụ: Hiển thị nội dung khác nhau dựa trên vai trò

let role = "admin";

if (role === "admin") {
    console.log("Chào mừng quản trị viên!");
} else if (role === "editor") {
    console.log("Chào mừng biên tập viên!");
} else {
    console.log("Chào mừng người dùng!");
}

Giải thích: Dựa trên giá trị của role, chương trình hiển thị thông báo phù hợp.

Lọc dữ liệu theo nhiều điều kiện

Toán tử logic thường được dùng để lọc dữ liệu dựa trên nhiều điều kiện.

Ví dụ: Lọc sản phẩm có giá từ 100 đến 500 và còn hàng

let product = { name: "Laptop", price: 300, inStock: true };

if (product.price >= 100 && product.price <= 500 && product.inStock) {
    console.log("Sản phẩm hợp lệ.");
} else {
    console.log("Sản phẩm không phù hợp.");
}

Giải thích: Sản phẩm chỉ hợp lệ nếu giá trong khoảng 100 - 500 và còn hàng (inStock === true).

Ví dụ: Kiểm tra điều kiện giao hàng miễn phí

let totalPrice = 600;
let isMember = true;

if (totalPrice > 500 || isMember) {
    console.log("Bạn được miễn phí giao hàng!");
} else {
    console.log("Bạn cần trả phí giao hàng.");
}

Giải thích: Miễn phí giao hàng nếu đơn hàng trên 500 hoặc là thành viên.

Xử lý biểu mẫu (Form Validation)

Kiểm tra xem dữ liệu nhập vào có hợp lệ hay không là một ứng dụng quan trọng.

Ví dụ: Kiểm tra tính hợp lệ của email

let email = "[email protected]";

if (email && email.includes("@")) {
    console.log("Email hợp lệ.");
} else {
    console.log("Email không hợp lệ.");
}

Giải thích: Email hợp lệ nếu có nội dung (email !== "") và chứa @.

Ví dụ: Kiểm tra mật khẩu đủ mạnh

let password = "Abc123!";

if (password.length >= 8 && /[A-Z]/.test(password) && /\d/.test(password)) {
    console.log("Mật khẩu mạnh.");
} else {
    console.log("Mật khẩu yếu.");
}

Giải thích: Mật khẩu mạnh nếu có ít nhất 8 ký tự, chứa chữ hoa và số.

Điều kiện trong vòng lặp (while, for)

Toán tử so sánh và logic giúp kiểm soát điều kiện lặp.

Ví dụ: In ra số chẵn từ 1 đến 10

for (let i = 1; i <= 10; i++) {
    if (i % 2 === 0) {
        console.log(i);
    }
}

Giải thích: Chỉ in ra số nếu chia hết cho 2 (i % 2 === 0).

Ví dụ: Nhập mật khẩu cho đến khi đúng

let correctPassword = "123456";
let userInput = "";

while (userInput !== correctPassword) {
    userInput = prompt("Nhập mật khẩu:"); // Yêu cầu nhập mật khẩu
}

console.log("Đăng nhập thành công!");

Giải thích: Vòng lặp while sẽ tiếp tục yêu cầu nhập mật khẩu cho đến khi đúng.

Kết bài

Toán tử so sánh và toán tử logic là những thành phần quan trọng trong JavaScript, giúp lập trình viên kiểm soát luồng thực thi của chương trình một cách linh hoạt. Chúng được sử dụng rộng rãi trong các điều kiện (if...else), vòng lặp (for, while), kiểm tra trạng thái đăng nhập, lọc dữ liệu, xử lý biểu mẫu và nhiều ứng dụng thực tế khác.

Hiểu và sử dụng thành thạo các toán tử này sẽ giúp bạn viết mã hiệu quả, tối ưu hơn và dễ dàng kiểm soát logic trong lập trình. Khi kết hợp với các kiến thức khác về JavaScript, bạn có thể xây dựng các ứng dụng mạnh mẽ và tương tác tốt hơn. Hãy thực hành nhiều để nắm vững cách sử dụng chúng!

Bài viết liên quan

  • 2