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:
const tokoBuka = true;
const promosiBerakhir = false;
console.log(tokoBuka); // true
console.log(promosiBerakhir); // false
Output yang Dihasilkan:
true
falseMenulis 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:
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:
true
true
true
true
false
falseEnam 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:
const stokCangkir = 4;
const stokKosong = stokCangkir === 0;
console.log(stokKosong); // false
Output yang Dihasilkan:
falseNama 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:
a | b | a AND b (&&) | a OR b | NOT a (!a) |
|---|---|---|---|---|
| true | true | true | true | false |
| true | false | false | true | false |
| false | true | false | true | true |
| false | false | false | false | true |
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:
false
true
trueTabel 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:
false
true
false
true
false
true
true
falseMari kita telaah apa yang terjadi pada baris-baris kode di atas:
- Baris 4–5 (
const stokCangkir = 4;dst.): dua data mentah kedai disimpan — stok cangkir kopi empat, stok susu nol. - Baris 8–9 (
const cangkirKosong = stokCangkir === 0;dst.): dua perbandingan dievaluasi dan hasilnya disimpan.stokCangkir === 0bernilaifalsekarena stok masih empat, sedangkanstokSusu === 0bernilaitrue. - Baris 14 (
const menuLengkap = !cangkirKosong && !susuHabis;): menu lengkap menuntut kedua bahan tersedia, sehingga kedua sisi dibalik dengan!lalu disambung&&. Karena!susuHabisbernilaifalse, gabungannya jatuh kefalse. - Baris 18 (
const perluRestock = cangkirKosong || susuHabis;): restock cukup dipicu satu kehabisan saja.susuHabisbernilaitrue, sehingga gabungan OR menghasilkantrue. - Baris 22 (
console.log(!perluRestock);): pembalikan daritruemenghasilkanfalse— berguna ketika kita menanyakan kebalikan sebuah keputusan. - Baris 25–28 (
const hargaKopi = 18000;dst.): tiga perbandingan angka memperlihatkan operator urutan dan ketidaksamaan.hargaKopi >= 18000menghasilkantruekarena batas boleh ditempuh pas, sedangkanhargaKopi !== 18000menghasilkanfalsekarena 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// 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