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ánhlet b = 0 == false; // Có giá trị true vì giá trị boolean false được chuyển thành số 0 trước khi so sánhlet c = "" == false; // Có giá trị true vì chuỗi rỗng chuyển thành số 0 trước khi so sánhTrong 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 falseNhì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.
Thử thách
Người mớiBạ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ả:
- Kiểm tra xem
acó bằngbtheo cách không nghiêm ngặt hay không, rồi lưu kết quả vàod. - Kiểm tra xem
acó bằngctheo cách nghiêm ngặt hay không, rồi lưu kết quả vàoe. - Kiểm tra xem
bcó khácctheo cách không nghiêm ngặt hay không, rồi lưu kết quả vàof. - Kiểm tra xem
acó khácbtheo cách nghiêm ngặt hay không, rồi lưu kết quả vàog.
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}`)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
8Vòng lặp
Vòng lặp forVòng lặp whileThoát vòng lặpBỏ qua lần lặpÔn tập: giai thừaVòng lặp do whileVòng lặp lồng nhau3Toán tử phần 1
Toán tử số họcToán tử moduloPhép tính số học rút gọnToán tử so sánhSo sánh bằng nghiêm ngặt và không nghiêm ngặtÔn tập: phép tính đơn giản6Nhập xuất cơ bản
Đầu raĐầu ra với biếnChuyển đổi kiểu dữ liệu, phần 1Chuyển đổi kiểu dữ liệu, phần 2Ôn tập đến 120Ôn tập: đúng hay saiTự luyện tập: Trình biên dịch JavaScript online