Ketika program mengambil keputusan — sebut saja penyaring data pelanggan milik Siti: mana pesanan yang datanya lengkap dan mana yang kosong — JavaScript harus mengubah setiap nilai yang diuji menjadi jawaban benar-salah. Yang menarik, penilaian itu tidak berhenti pada tipe boolean: setiap nilai, apa pun tipenya, dinilai sebagai benar atau salah. String, angka, bahkan nilai kosong punya jawabannya masing-masing.

Chapter penutup section ini membakukan aturan penilaian tersebut: daftar lengkap nilai yang dinilai false (falsy), bukti keluarannya lewat Boolean(), dan kelompok nilai lain yang semuanya dinilai true (truthy). Aturan ini akan dipakai terus-menerus begitu kita masuk ke section Control Flow.

Satu Penilaian untuk Setiap Nilai #

JavaScript menetapkan dua kategori: nilai yang dinilai true disebut truthy, dan nilai yang dinilai false disebut falsy. Daftar falsy ditetapkan oleh standar dan tidak bertambah: hanya delapan nilai, dan sisanya — semua nilai lain di seluruh bahasa — adalah truthy.

Alat resmi untuk melihat penilaian itu adalah function Boolean(), yang mengubah nilai apa pun menjadi boolean sesuai kategorinya. Sebelum digunakan, kita sudah bertemu Boolean() di chapter Type Conversion sebagai konverter tipe; sekarang perannya lebih spesifik: menjadi jendela untuk mengintip cara JavaScript menilai sebuah nilai.

Delapan Nilai Falsy #

Inilah daftar lengkapnya — hafalan kecil yang berlaku sepanjang karier JavaScript:

NilaiKeterangan
falsesatu-satunya nilai boolean yang falsy
0angka nol
-0nol negatif, keluaran pembagian/perkalian tertentu
0nnol dalam tipe bigint
""string kosong, tanpa satu karakter pun
nullkekosongan yang disengaja
undefinednilai awal yang belum diisi
NaNhasil perhitungan angka yang gagal

Daftar ini mudah diingat karena terlihat “kosong atau gagal”: nol dalam segala wujudnya, string tanpa isi, dua nilai kekosongan, dan NaN. Perhatikan pula bahwa ketujuh tipe primitive kita semuanya menyumbang minimal satu anggota — dan 0n menunjukkan bahwa bigint ikut serta dalam penilaian ini meski jarang dipakai.

Contoh Lengkap: Menguji Daftar Falsy #

Berkas berikut menguji kedelapan nilai falsy satu per satu, lalu membandingkannya dengan sejumlah nilai truthy:

// delapan-falsy.js
// Membuktikan delapan nilai falsy dan beberapa nilai truthy dengan Boolean().

// --- Delapan nilai falsy ---
console.log(Boolean(false));     // false
console.log(Boolean(0));         // false
console.log(Boolean(-0));        // false
console.log(Boolean(0n));        // false
console.log(Boolean(""));        // false — string kosong
console.log(Boolean(null));      // false
console.log(Boolean(undefined)); // false
console.log(Boolean(NaN));       // false

// --- Contoh nilai truthy ---
console.log(Boolean("0"));     // true — string, bukan angka
console.log(Boolean("false")); // true — teks biasa
console.log(Boolean(" "));     // true — string berisi spasi
console.log(Boolean(42));      // true
console.log(Boolean(-1));      // true — angka negatif tetap truthy
console.log(Boolean([]));      // true — array kosong pun truthy
console.log(Boolean({}));      // true — object kosong pun truthy

Output yang Dihasilkan:

text
false
false
false
false
false
false
false
false
true
true
true
true
true
true
true

Mari kita telaah apa yang terjadi pada baris-baris kode di atas:

  1. Baris 5–8 (console.log(Boolean(false)); dst.): keempat bentuk nol — false, 0, -0, dan 0n — semuanya dinilai false. Bagian “nol” dari daftar falsy terbukti utuh.
  2. Baris 9–12 (console.log(Boolean("")); dst.): string kosong, null, undefined, dan NaN melengkapi daftar. Delapan baris ini adalah seluruh nilai falsy yang ada — tidak ada yang terlewat dan tidak ada yang menambah.
  3. Baris 15–17 (console.log(Boolean("0")); dst.): tiga string yang isinya tampak “kosong atau negatif” justru truthy. "0" adalah string satu karakter, "false" adalah teks lima huruf, dan " " berisi spasi — semua tidak kosong.
  4. Baris 18–19 (console.log(Boolean(42)); dst.): setiap angka selain nol adalah truthy, termasuk angka negatif seperti -1. Tidak ada pengecualian lain.
  5. Baris 20–21 (console.log(Boolean([])); dst.): array kosong [] dan object kosong {} keduanya truthy — kontras dengan intuisi “kosong berarti false”. Keduanya bertipe object, dan object selalu truthy; detailnya menunggu kita di section Arrays dan section Objects.

Sisanya: Semua Truthy #

Aturan sisi lainnya jauh lebih sederhana daripada daftar falsy: tidak ada daftar kedua yang perlu dihafal. Setiap nilai yang bukan salah satu dari delapan nilai falsy adalah truthy — termasuk string yang tampak seperti nol, angka negatif, dan seluruh object sekalipun kosong. Ketika membaca kode yang menguji sebuah nilai secara langsung, aturan ini memungkinkan kita memprediksi hasilnya tanpa menjalankan program.

Jebakan yang Paling Sering Terjadi #

Jebakan klasik terjadi pada data formulir: nilai yang diketik 0 tiba sebagai string "0". Karena string tidak kosong, "0" adalah truthy — dan penyaring yang mengandalkan penilaian langsung akan menganggap stok nol itu “terisi”:

js
const inputStok = "0"; // dari formulir, semuanya string
console.log(Boolean(inputStok));         // true — string "0" tidak kosong
console.log(Boolean(Number(inputStok))); // false — setelah dikonversi jadi 0

Output yang Dihasilkan:

text
true
false

Baris ketiga memperlihatkan pola perbaikannya: konversikan dulu tipe datanya (Number(inputStok)), baru nilai itu diuji. Angka 0 hasil konversi kini dinilai false — sesuai keadaan stok yang memang kosong.

Section Values dan Types resmi menutup di sini. Kita telah mengenali tujuh tipe primitive, membaca sifat immutable-nya, menguji batas number, membedakan dua kekosongan, memeriksa tipe dengan typeof, mengonversi antar tipe, dan kini membakukan penilaian benar-salah atas setiap nilai. Semua perangkat itu langsung terpakai di section berikutnya, Operators, tempat operator perbandingan dan logika — yang selama ini kita pakai seadanya — dibedah sampai ke aturan prioritasnya.

Berkas Sumber

Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.

delapan-falsy.js

Unduh berkas
javascript
// delapan-falsy.js
// Membuktikan delapan nilai falsy dan beberapa nilai truthy dengan Boolean().

// --- Delapan nilai falsy ---
console.log(Boolean(false));     // false
console.log(Boolean(0));         // false
console.log(Boolean(-0));        // false
console.log(Boolean(0n));        // false
console.log(Boolean(""));        // false — string kosong
console.log(Boolean(null));      // false
console.log(Boolean(undefined)); // false
console.log(Boolean(NaN));       // false

// --- Contoh nilai truthy ---
console.log(Boolean("0"));     // true — string, bukan angka
console.log(Boolean("false")); // true — teks biasa
console.log(Boolean(" "));     // true — string berisi spasi
console.log(Boolean(42));      // true
console.log(Boolean(-1));      // true — angka negatif tetap truthy
console.log(Boolean([]));      // true — array kosong pun truthy
console.log(Boolean({}));      // true — object kosong pun truthy