Program yang berguna selalu mengambil keputusan: apakah stok kopi sudah habis, apakah total belanja memenuhi syarat gratis ongkir, apakah pengguna sudah mengisi semua kolom wajib. Untuk menyatakan hasil setiap pertanyaan benar-salah itu, JavaScript menyediakan tipe paling sederhana di antara semua tipenya: boolean, yang hanya memuat dua nilai — true dan false.

Chapter ini melatih tiga sumber nilai boolean: penulisan literalnya secara langsung, hasil perbandingan, dan hasil penggabungan logika. Di akhir chapter, kita menyatukan semuanya dalam satu berkas keputusan stok kedai kopi. Semua keluaran diuji nyata di Node.

Tipe Paling Sederhana #

true dan false adalah dua-satunya nilai yang dimiliki tipe boolean. Keduanya ditulis tanpa kutip — true adalah nilai boolean, sedangkan "true" adalah string berisi empat huruf. Perbedaan itu terdengar sepele, tetapi terlalu sering menjadi sumber bug; kita buktikan ulang pada chapter Truthy dan Falsy di akhir section ini.

Sebagai nilai, boolean bisa disimpan dalam variabel dan dicetak seperti nilai lainnya:

js
const tokoBuka = true;
const promosiBerakhir = false;
console.log(tokoBuka);        // true
console.log(promosiBerakhir); // false

Output yang Dihasilkan:

text
true
false

Menulis true atau false secara manual jarang terjadi dalam program nyata. Nilai boolean jauh lebih sering lahir dari dua jalur berikut: perbandingan dan logika.

Hasil Perbandingan #

Setiap operator perbandingan menghasilkan boolean. Ketika engine mengevaluasi stok === 0, engine memeriksa kedua sisi dan menjawab dengan true atau false:

js
const hargaKopi = 18000;
console.log(hargaKopi === 18000); // true — sama persis
console.log(hargaKopi !== 20000); // true — tidak sama dengan
console.log(hargaKopi > 15000);   // true — lebih besar dari
console.log(hargaKopi >= 18000);  // true — lebih besar atau sama
console.log(hargaKopi < 10000);   // false — lebih kecil dari
console.log(hargaKopi <= 17000);  // false — lebih kecil atau sama

Output yang Dihasilkan:

text
true
true
true
true
false
false

Enam operator di atas masing-masing menjawab satu pertanyaan: === menanyakan kesamaan, !== ketidaksamaan, sedangkan >, >=, <, dan <= menanyakan urutan. Karena hasilnya boolean, hasil perbandingan bisa langsung disimpan dalam variabel — kebiasaan yang membuat kode keputusan jauh lebih mudah dibaca:

js
const stokCangkir = 4;
const stokKosong = stokCangkir === 0;
console.log(stokKosong); // false

Output yang Dihasilkan:

text
false

Nama stokKosong menjawab pertanyaan “apakah stok kosong?” sekali di satu tempat, lalu jawabannya bisa dipakai di mana saja. Pembaca kode tidak perlu menafsirkan ulang perbandingannya.

Menggabungkan dengan AND, OR, dan NOT #

Keputusan nyata jarang bergantung pada satu syarat. Operator logika menggabungkan beberapa nilai boolean menjadi satu: && (AND) menghasilkan true hanya jika kedua sisi true; || (OR) menghasilkan true jika salah satu sisi true; dan ! (NOT) membalik nilai:

aba AND b (&&)a OR bNOT a (!a)
truetruetruetruefalse
truefalsefalsetruefalse
falsetruefalsetruetrue
falsefalsefalsefalsetrue
js
const stokCangkirAda = true;
const stokSusuAda = false;
console.log(stokCangkirAda && stokSusuAda); // false — keduanya wajib true
console.log(stokCangkirAda || stokSusuAda); // true  — salah satu cukup
console.log(!stokSusuAda);                  // true  — kebalikan

Output yang Dihasilkan:

text
false
true
true

Tabel di atas dan contoh di sini sengaja membatasi diri pada operand boolean murni. Operator && dan || di JavaScript sebenarnya bisa mengembalikan operand non-boolean berkat perilaku yang disebut short-circuit — perilaku itu bernilai besar untuk nilai default, tetapi lebih tepat dibahas lengkap bersama operator lain di section Operators.

Contoh Lengkap: Keputusan Stok Kedai #

Berkas berikut menyatukan ketiga sumber boolean — perbandingan, logika, dan pembalikan — dalam simulasi keputusan persediaan kedai kopi Budi:

// keputusan-stok.js
// Nilai boolean sebagai hasil perbandingan dan bahan keputusan kedai kopi.

const stokCangkir = 4;
const stokSusu = 0;

// Perbandingan menghasilkan boolean, lalu disimpan dalam variabel
const cangkirKosong = stokCangkir === 0;
const susuHabis = stokSusu === 0;
console.log(cangkirKosong); // false
console.log(susuHabis);     // true

// AND (&&): kedua syarat harus true agar hasilnya true
const menuLengkap = !cangkirKosong && !susuHabis;
console.log(menuLengkap);   // false

// OR (||): cukup satu syarat true
const perluRestock = cangkirKosong || susuHabis;
console.log(perluRestock);  // true

// NOT (!): membalik nilai boolean
console.log(!perluRestock); // false

// Perbandingan angka pun menghasilkan boolean
const hargaKopi = 18000;
console.log(hargaKopi > 15000);   // true
console.log(hargaKopi >= 18000);  // true
console.log(hargaKopi !== 18000); // false

Output yang Dihasilkan:

text
false
true
false
true
false
true
true
false

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

  1. Baris 4–5 (const stokCangkir = 4; dst.): dua data mentah kedai disimpan — stok cangkir kopi empat, stok susu nol.
  2. Baris 8–9 (const cangkirKosong = stokCangkir === 0; dst.): dua perbandingan dievaluasi dan hasilnya disimpan. stokCangkir === 0 bernilai false karena stok masih empat, sedangkan stokSusu === 0 bernilai true.
  3. Baris 14 (const menuLengkap = !cangkirKosong && !susuHabis;): menu lengkap menuntut kedua bahan tersedia, sehingga kedua sisi dibalik dengan ! lalu disambung &&. Karena !susuHabis bernilai false, gabungannya jatuh ke false.
  4. Baris 18 (const perluRestock = cangkirKosong || susuHabis;): restock cukup dipicu satu kehabisan saja. susuHabis bernilai true, sehingga gabungan OR menghasilkan true.
  5. Baris 22 (console.log(!perluRestock);): pembalikan dari true menghasilkan false — berguna ketika kita menanyakan kebalikan sebuah keputusan.
  6. Baris 25–28 (const hargaKopi = 18000; dst.): tiga perbandingan angka memperlihatkan operator urutan dan ketidaksamaan. hargaKopi >= 18000 menghasilkan true karena batas boleh ditempuh pas, sedangkan hargaKopi !== 18000 menghasilkan false karena nilainya memang sama.

Satu langkah lagi melengkapi gambaran boolean: nilai boolean itu sendiri jarang ditulis manual, karena sebagian besar lahir dari perbandingan seperti yang kita lihat. Namun JavaScript bisa lebih jauh — engine mampu menilai setiap nilai, apa pun tipenya, sebagai benar atau salah. Dua nilai istimewa yang paling sering terlibat dalam penilaian itu adalah null dan undefined, topik chapter berikutnya.

Berkas Sumber

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

keputusan-stok.js

Unduh berkas
javascript
// keputusan-stok.js
// Nilai boolean sebagai hasil perbandingan dan bahan keputusan kedai kopi.

const stokCangkir = 4;
const stokSusu = 0;

// Perbandingan menghasilkan boolean, lalu disimpan dalam variabel
const cangkirKosong = stokCangkir === 0;
const susuHabis = stokSusu === 0;
console.log(cangkirKosong); // false
console.log(susuHabis);     // true

// AND (&&): kedua syarat harus true agar hasilnya true
const menuLengkap = !cangkirKosong && !susuHabis;
console.log(menuLengkap);   // false

// OR (||): cukup satu syarat true
const perluRestock = cangkirKosong || susuHabis;
console.log(perluRestock);  // true

// NOT (!): membalik nilai boolean
console.log(!perluRestock); // false

// Perbandingan angka pun menghasilkan boolean
const hargaKopi = 18000;
console.log(hargaKopi > 15000);   // true
console.log(hargaKopi >= 18000);  // true
console.log(hargaKopi !== 18000); // false