=== (strict equality) so sánh giá trị và kiểu mà không chuyển đổi. == (loose equality) thực hiện type coercion trước, dẫn đến những kết quả bất ngờ.
js
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
=== (strict equality) so sánh giá trị và kiểu mà không chuyển đổi. == (loose equality) thực hiện type coercion trước, dẫn đến những kết quả bất ngờ.
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
Các quy tắc ép kiểu không hiển nhiên và dẫn đến lỗi. Ví dụ, [] == ![] là true (một sự kỳ quặc khét tiếng). Bạn hiếm khi muốn JavaScript âm thầm chuyển đổi kiểu sau lưng bạn trong một phép so sánh.
Luôn dùng === (và !==). Ngoại lệ phổ biến, có chủ đích duy nhất là kiểm tra null hoặc undefined cùng lúc:
if (value == null) { ... } // true cho CẢ null và undefined — một thành ngữ có chủ ý
Với mọi thứ còn lại, strict equality giữ cho các phép so sánh có thể dự đoán được. Để so sánh các object, bạn cần một phép kiểm tra deep-equality (chúng so sánh theo tham chiếu, nên {a:1} === {a:1} là false).