</>
⌕
Junior #coercion#equality#truthy-falsy

`==` và `===` khác nhau thế nào? Type coercion hoạt động ra sao?

⚡ Trả lời nhanh

`===` so sánh giá trị và kiểu, không ép kiểu. `==` ép kiểu (type coercion) theo quy tắc phức tạp trước khi so sánh nên cho kết quả khó đoán, ví dụ `[] == false` là true. Mặc định dùng `===`; chỉ `x == null` là cách viết gọn hợp lý cho null và undefined.

Giải thích

  • === (strict equality): khác kiểu thì false ngay, không ép kiểu.
  • == (loose equality): nếu khác kiểu thì ép về primitive/number rồi so sánh. Ngoại lệ đặc biệt: null == undefined là true và chúng không == với giá trị nào khác.
  • NaN không bằng chính nó; dùng Number.isNaN hoặc Object.is. Object.is phân biệt +0 và -0.
main.js · sửa được
🃏 Ôn bằng flashcard