===(strict): so sánh cả kiểu và giá trị, không ép kiểu.1 === '1'→false.==(loose): ép kiểu hai vế về cùng dạng rồi mới so sánh, dẫn tới nhiều kết quả khó đoán.
Vài ca == gây bất ngờ:
- 0 == '' → true
- 0 == false → true
- null == undefined → true (nhưng null === undefined → false)
- NaN == NaN → false (dùng Number.isNaN)
Khuyến nghị: luôn dùng === để tránh lỗi ép kiểu ngầm. Ngoại lệ tiện dụng duy nhất: x == null để kiểm tra "null hoặc undefined" trong một lần.
Ghi chú: Object.is giống === nhưng xử lý NaN và -0 chính xác hơn.