== và === trong JavaScript khác gì nhau?
Trong JavaScript, các toán tử == và === được sử dụng để so sánh giữa hai toán hạng. Toán tử == so sánh trừu tượng (abstract equality), tức là nó thực hiện các chuyển đổi loại cần thiết trước khi so sánh đẳng thức. Cú pháp so sánh: a == b . Còn toán tử === so sánh cân bằng nghiêm ngặt ...
Trong JavaScript, các toán tử == và === được sử dụng để so sánh giữa hai toán hạng.
Toán tử == so sánh trừu tượng (abstract equality), tức là nó thực hiện các chuyển đổi loại cần thiết trước khi so sánh đẳng thức. Cú pháp so sánh: a == b.
Còn toán tử === so sánh cân bằng nghiêm ngặt (strict equality), nghĩa là nó sẽ không thực hiện chuyển đổi loại. Do đó nếu hai giá trị không cùng loại, thì khi so sánh, kết quả sẽ trả về false. Cú pháp so sánh: a === b.
Toán tử == và === trong JavascriptVí dụ 1:
<script> // Trong chuỗi R.H.S. "3" được chuyển đổi thành // số 3, do đó trả về True. document.write(9 == "9"); // sử dụng cho dòng tiếp theo document.write('<br>') // Ở đây không có chuyển đổi loại diễn ra, // do đó trả về False document.write(9 === "9"); </script>
Đầu ra:
true false
Ví dụ 2:
<script> // Tại đây L.H.S. là một chuỗi trong khi // R.H.S. là một đối tượng chuỗi, // do chuyển đổi kiểu của đối tượng chuỗi thành // một chuỗi ký tự, nó trả về true. document.write("Quantrimang" == new String("Quantrimang")); // sử dụng cho dòng tiếp theo document.write('<br>') // Không có chuyển đổi kiểu document.write("Quantrimang" === new String("Quantrimang")); </script>
Đầu ra:
true false
Ví dụ 3:
<script> // Ở đây số 1 được chuyển đổi thành true (kiểu boolean) // vì trong javascript true là 1 và false là 0 // do đó nó trả về true. document.write(true == '1'); // dùng cho dòng tiếp theo document.write('<br>') // Không có chuyển đổi kiểu document.write(true === '1'); </script>
Đầu ra:
true false
Nói chung, toán tử === được khuyến nghị vì nó không bao giờ thực hiện chuyển đổi loại khi thực hiện so sánh do đó luôn tạo ra kết quả chính xác.
Bạn đọc có thể tìm hiểu thêm về các toán tử khác trong bài viết: Toán tử trong JavaScript.