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

การแปลง [] (Empty Array) เป็น Boolean ใน JavaScript

ใน JavaScript Empty Array [] แปลงเป็น Boolean ได้ true เพราะ Array เป็น Object และ Object ทุกตัว (ยกเว้น null) เป็น Truthy

ตัวอย่าง

<script>
var myVal = [];
document.write("Boolean: " + Boolean(myVal)); // "Boolean: true"
document.write("<br>!![] = " + !![]);        // "!![] = true"
document.write("<br>[] == true? " + ([] == true)); // false (Type Coercion แปลก)
// [] == true -> [].toString() -> "" -> 0 -> 0 == 1 -> false
// แต่ Boolean([]) -> true
</script>

Truthiness Table (ค่าที่เป็น Truthy / Falsy)

ValueBoolean()Note
[] (Empty Array)trueObject → Truthy
[1,2] (Non-empty Array)trueObject → Truthy
{} (Empty Object)trueObject → Truthy
"" (Empty String)falseFalsy
0, -0, 0nfalseFalsy
nullfalseFalsy
undefinedfalseFalsy
NaNfalseFalsy
falsefalseFalsy

การใช้งานจริง (Practical Usage)

// ❌ ผิด: เช็ค Array ว่างด้วย Boolean
if (myArray) { ... } // [] -> true เข้าเงื่อนไข ❌

// ✅ ถูก: เช็ค Length
if (myArray.length > 0) { ... } // [] -> 0 -> false ✅

// ✅ หรือใช้ Array.isArray + Length
if (Array.isArray(myArray) && myArray.length) { ... }

Boolean() Constructor vs !! Operator

Boolean([])  // true (Explicit Conversion)
!![]         // true (Double Negation - Idiomatic)
[] ? true : false // true (Implicit Coercion ใน Condition)

สรุป

  • Boolean([]) === true เพราะ Array เป็น Object → Truthy
  • อย่าใช้ Boolean(array) หรือ !!array เช็คว่า Array ว่างหรือไม่ จะได้ true ตลอด
  • ใช้ array.length > 0 หรือ array.length === 0 แทน
  • กฎทั่วไป: Object ทุกตัว = true (Truthly) รวมถึง Array, Function, Date, Regex, Error, new Boolean(false), new Number(0), new String("")