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

วิธีเปรียบเทียบ String และ Boolean ใน JavaScript

การเปรียบเทียบ String และ Boolean ใน JavaScript มีพฤติกรรมพิเศษเนื่องจาก Type Coercion

คืนค่า true

false == "0";    // true
true == "1";     // true
false == "";     // true

คืนค่า false

false == "false"; // false
true == "true";   // false

เหตุผล

เมื่อเปรียบเทียบ Boolean กับ String ด้วย == JavaScript จะแปลง Boolean เป็น Number (false→0, true→1) แล้วแปลง String เป็น Number เช่นกัน

  • "0" → 0, "" → 0, "1" → 1
  • "false" → NaN, "true" → NaN

Strict Equality (===)

var data = true;
data === "true";        // false (type ต่างกัน)
String(data) === "true"; // true (แปลงเป็น string ก่อน)

แนวทางปฏิบัติที่ดี

  1. ใช้ === (strict equality) เสมอ – ไม่มี type coercion
  2. แปลงชนิดข้อมูลให้ตรงกันก่อนเปรียบเทียบ: Boolean(str), String(bool), Number(str)
  3. สำหรับ form inputs (string) ต้องการ boolean: value === "true" หรือ value === "on"

Boolean() conversion

Boolean("false"); // true! (non-empty string)
Boolean("");      // false
Boolean("0");     // true! (non-empty string)