บทความนี้อธิบายพฤติกรรมที่แตกต่างของ JavaScript ระหว่าง loose equality (==) และ logical OR (||)
กรณี 1: ([] == false) → true
ขั้นตอนการแปลงแบบ (Type Coercion):
falseแปลงเป็น Number →0[](Object) แปลงเป็น Primitive →""(empty string)""แปลงเป็น Number →00 == 0→true
กรณี 2: ([] || true) → []
Logical OR ใช้ Boolean() conversion (ไม่ใช่ type coercion):
Boolean([])→true(อาร์เรย์ว่างเป็น truthy)- ค่า truthy แรกใน
||จะถูกคืนค่า →[]
สรุปความแตกต่าง
| การดำเนินการ | การแปลง | ผลลัพธ์ |
|---|---|---|
== (loose equality) | Type Coercion → Number | true |
|| (logical OR) | ToBoolean → truthy/falsy | [] (ค่าเดิม) |
บทเรียน: ควรใช้ === (strict equality) และระวัง truthy/falsy values ใน JavaScript