Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ทำไม ([] == false) เป็น true แต่ ([] || true) กลับเป็น [] ? - JavaScript

บทความนี้อธิบายพฤติกรรมที่แตกต่างของ JavaScript ระหว่าง loose equality (==) และ logical OR (||)

กรณี 1: ([] == false) → true

ขั้นตอนการแปลงแบบ (Type Coercion):

  1. false แปลงเป็น Number → 0
  2. [] (Object) แปลงเป็น Primitive → "" (empty string)
  3. "" แปลงเป็น Number → 0
  4. 0 == 0 → true

กรณี 2: ([] || true) → []

Logical OR ใช้ Boolean() conversion (ไม่ใช่ type coercion):

  1. Boolean([]) → true (อาร์เรย์ว่างเป็น truthy)
  2. ค่า truthy แรกใน || จะถูกคืนค่า → []

สรุปความแตกต่าง

การดำเนินการการแปลงผลลัพธ์
== (loose equality)Type Coercion → Numbertrue
|| (logical OR)ToBoolean → truthy/falsy[] (ค่าเดิม)

บทเรียน: ควรใช้ === (strict equality) และระวัง truthy/falsy values ใน JavaScript