Menu
CoddyTech

So sánh bằng nghiêm ngặt và không nghiêm ngặt

Thuộc phần Kiến thức cơ bản trong hành trình JavaScript của Coddy. Bài học 16 trên 77.

Trong JavaScript, có hai loại toán tử so sánh bằng: so sánh bằng lỏng (==) và so sánh bằng nghiêm ngặt (===).

Phép so sánh bằng lỏng (==) kiểm tra xem hai giá trị có bằng nhau hay không sau khi thực hiện chuyển đổi kiểu dữ liệu. Điều này có nghĩa là nếu các toán hạng có kiểu khác nhau, JavaScript sẽ cố chuyển đổi chúng sang cùng một kiểu trước khi so sánh.

Ví dụ:

let b = 5 == "5";   // Có giá trị true vì chuỗi (string) "5" được chuyển thành số 5 trước khi so sánh
let b = 0 == false; // Có giá trị true vì giá trị boolean false được chuyển thành số 0 trước khi so sánh
let c = "" == false; // Có giá trị true vì chuỗi rỗng chuyển thành số 0 trước khi so sánh

Trong khi đó, phép so sánh bằng nghiêm ngặt (===) kiểm tra xem hai giá trị có bằng nhau hay không mà không chuyển đổi kiểu dữ liệu. Nếu hai toán hạng có kiểu dữ liệu khác nhau, chúng được xem là không bằng nhau.

Ví dụ:

let b = 5 === "5";   // Có giá trị false vì không có chuyển đổi kiểu dữ liệu (data type), và một số không bằng một chuỗi (string)
let b = 0 === false; // Mang giá trị false vì không có chuyển đổi kiểu, và số 0 không bằng giá trị boolean false

Nhìn chung, bạn nên dùng phép so sánh bằng nghiêm ngặt (===) trong hầu hết trường hợp để tránh kết quả không mong muốn do ép kiểu.

Tương tự, còn có toán tử không bằng lỏng (!=) và toán tử không bằng nghiêm ngặt (!==), chúng hoạt động theo cách tương tự nhưng kiểm tra tính không bằng thay vì tính bằng.

Toán tử không bằng lỏng (!=) kiểm tra xem hai giá trị có khác nhau sau khi ép kiểu hay không, còn toán tử không bằng nghiêm ngặt (!==) kiểm tra xem hai giá trị có khác nhau mà không chuyển đổi kiểu hay không.

challenge icon

Thử thách

Người mới

Bạn được cung cấp đoạn code có ba biến: a, b và c.

Nhiệm vụ của bạn là thực hiện các phép so sánh sau và in ra kết quả:

  1. Kiểm tra xem a có bằng b theo cách không nghiêm ngặt hay không, rồi lưu kết quả vào d.
  2. Kiểm tra xem a có bằng c theo cách nghiêm ngặt hay không, rồi lưu kết quả vào e.
  3. Kiểm tra xem b có khác c theo cách không nghiêm ngặt hay không, rồi lưu kết quả vào f.
  4. Kiểm tra xem a có khác b theo cách nghiêm ngặt hay không, rồi lưu kết quả vào g.

Dùng các biến và toán tử so sánh đã cho để hoàn thành nhiệm vụ.

Tự làm thử

// Các biến đã cho
let a = 10
let b = "10"
let c = true

// Viết code của bạn bên dưới


// Đừng thay đổi dòng bên dưới
console.log(`d = ${d}`)
console.log(`e = ${e}`)
console.log(`f = ${f}`)
console.log(`g = ${g}`)
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức cơ bản

Tự luyện tập: Trình biên dịch JavaScript online