=== (strict equality) เปรียบเทียบค่า และ ประเภท โดยไม่มีการแปลง == (loose equality) ทำการ type coercion ก่อน ซึ่งนำไปสู่ผลลัพธ์ที่น่าประหลาดใจ
js
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
=== (strict equality) เปรียบเทียบค่า และ ประเภท โดยไม่มีการแปลง == (loose equality) ทำการ type coercion ก่อน ซึ่งนำไปสู่ผลลัพธ์ที่น่าประหลาดใจ
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
กฎการแปลงประเภทไม่ชัดเจน และนำไปสู่ข้อผิดพลาด ตัวอย่างเช่น [] == ![] คือ true (ลักษณ์เฉพาะที่ไม่แปลก) คุณไม่ค่อยต้องการให้ JavaScript แปลงประเภทโดยการ เปรียบเทียบเบื้องหลัง
ใช้ === เสมอ (และ !==) ข้อยกเว้นที่พบบ่อยและตั้งใจเพียงข้อเดียว คือ การตรวจสอบ null หรือ undefined ไปด้วยกัน:
if (value == null) { ... } // true for BOTH null and undefined — a deliberate idiom
สำหรับสิ่งอื่นทั้งหมด ความเท่าเทียมที่เข้มงวดจะทำให้การเปรียบเทียบสามารถคาดการณ์ได้ ในการเปรียบเทียบวัตถุ คุณต้องตรวจสอบความเท่าเทียมเชิงลึก (พวกเขาเปรียบเทียบตามการอ้างอิง ดังนั้น {a:1} === {a:1} คือ false)