ใน 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)
| Value | Boolean() | Note |
|---|---|---|
[] (Empty Array) | true | Object → Truthy |
[1,2] (Non-empty Array) | true | Object → Truthy |
{} (Empty Object) | true | Object → Truthy |
"" (Empty String) | false | Falsy |
0, -0, 0n | false | Falsy |
null | false | Falsy |
undefined | false | Falsy |
NaN | false | Falsy |
false | false | Falsy |
การใช้งานจริง (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("")