1. Konsep Nilai Truthy dan Falsy
Di banyak bahasa (terutama JavaScript, Python, dan PHP), ketika suatu nilai yang BUKAN boolean diletakkan di dalam kondisi `if (...)`, nilai tersebut akan otomatis dikonversi secara implisit menjadi `true` (dikenal sebagai Truthy) atau `false` (dikenal sebagai Falsy).
Daftar Nilai Falsy di JavaScript
Nilai-nilai berikut selalu bernilai false dalam evaluasi boolean:
1. `false` (boolean asli)
2. `0`, `-0`, `0n` (angka nol)
3. `""` (string kosong)
4. `null` (wadah bernilai kosong sengaja)
5. `undefined` (variabel belum diisi)
6. `NaN` (Not a Number)
Semua nilai di luar daftar ini (termasuk string berisi spasi `" "`, array kosong `[]`, object `{}`) adalah TRUTHY!
2. Perbedaan Strict Equality vs Loose Equality
Dalam bahasa bertipe dinamis seperti JavaScript dan PHP, terdapat perbedaan krusial antara pengecekan dengan konversi tipe otomatis (`==`) dan tanpa konversi tipe (`===`).
Perbandingan Equality
| 1 | // Loose Equality (Melakukan Type Coercion) |
| 2 | console.log(5 == "5"); // true (string "5" dipaksa jadi angka 5) |
| 3 | console.log(0 == false); // true |
| 4 | console.log(null == undefined); // true |
| 5 | |
| 6 | // Strict Equality (Memeriksa Nilai DAN Tipe Data - SELALU DIREKOMENDASIKAN!) |
| 7 | console.log(5 === "5"); // false (Number vs String) |
| 8 | console.log(0 === false);// false (Number vs Boolean) |
Golden Rule Pemrograman Modern
Di JavaScript & PHP, selalu gunakan `===` (strict equality) dan `!==` (strict inequality) untuk menghindari bug tersembunyi yang sulit dilacak akibat konversi tipe data otomatis.
Kuis Pemahaman
+10 XP
Di JavaScript, apa hasil evaluasi dari: `Boolean([])` (sebuah array kosong)?