Boolean dan perbandingan
5 == "5" bernilai true, tetapi 5 === "5" bernilai false. Tanda sama dengan tiga juga memeriksa apakah kedua sisi bertipe sama.
Pertanyaan dengan jawaban ya atau tidak
Program terus-menerus bertanya. Apakah kata sandinya cukup panjang? Apakah nyawa pemain sudah habis? Apakah hari ini akhir pekan? Setiap pertanyaan itu punya salah satu dari dua jawaban, dan JavaScript mewakilinya dengan dua nilai boolean, true dan false. Boolean dinamai menurut George Boole, matematikawan abad ke-19 yang menyusun aljabar benar dan salah. Sendirian, boolean tidak terlalu menarik, tetapi boolean-lah yang memungkinkan program mengambil keputusan, yang menjadi pokok bahasan unit berikutnya.
Operator perbandingan
Perbandingan mengambil dua nilai dan menghasilkan boolean. Enam yang paling sering kamu pakai ada di bawah. Perhatikan bahwa "sama dengan" ditulis dengan tiga tanda sama dengan, karena satu tanda = sudah berarti "simpan nilai".
| Operator | Pertanyaan | Contoh | Hasil |
|---|---|---|---|
| === | sama dengan? | 4 === 4 | true |
| !== | tidak sama dengan? | 4 !== 4 | false |
| < | kurang dari? | 3 < 8 | true |
| > | lebih dari? | 3 > 8 | false |
| <= | kurang dari atau sama dengan? | 8 <= 8 | true |
| >= | lebih dari atau sama dengan? | 7 >= 8 | false |
Seperti aritmetika, perbandingan adalah ekspresi, jadi kamu bisa mencetaknya atau menyimpannya dalam variabel: const isAdult = age >= 18; memasukkan true atau false ke dalam isAdult, tergantung usianya. Nama variabel untuk boolean sering diawali is, has, atau can, sehingga kodenya terbaca seperti pertanyaan.
Mengapa === dan bukan ==
JavaScript juga punya sama dengan ganda, ==, yang disebut kesamaan longgar. Sebelum membandingkan, operator ini mencoba mengubah kedua sisi menjadi tipe yang sama, sehingga hasilnya sulit ditebak: 5 == "5" bernilai true, begitu pula 0 == "". Sama dengan tiga ===, kesamaan ketat, tidak pernah mengubah tipe. Kalau tipenya berbeda, jawabannya langsung false. MDN dan kebanyakan panduan gaya menganjurkan === dan !== untuk kode sehari-hari, dan kursus ini memakainya di mana-mana.
console.log(5 === 5); // true
console.log(5 === "5"); // false
// kesamaan longgar, sebaiknya dihindari:
console.log(5 == "5"); // true
console.log("cat" !== "dog"); // trueString juga bisa dibandingkan. === memeriksa apakah dua string punya karakter yang persis sama, termasuk huruf besarnya, jadi "Yes" === "yes" bernilai false. Operator < dan > membandingkan string karakter demi karakter memakai kode karakternya, yang mendekati urutan kamus untuk kata berhuruf kecil: "apple" < "banana" bernilai true. Dalam urutan itu, huruf besar berada sebelum semua huruf kecil, jadi "Zebra" < "apple" juga bernilai true.
Menggabungkan jawaban dengan &&, || dan !
Pertanyaan sungguhan sering terdiri atas beberapa bagian. Sebuah wahana permainan mungkin mensyaratkan tinggi minimal 120 cm dan usia minimal 8 tahun. JavaScript menggabungkan jawaban boolean dengan operator logika. && (dan) bernilai true hanya kalau kedua sisi true. || (atau) bernilai true kalau setidaknya satu sisi true. ! (bukan) membalik boolean, jadi !true bernilai false.
const height = 130;
const age = 7;
console.log(height >= 120 && age >= 8); // false
console.log(height >= 120 || age >= 8); // true
console.log(!(age >= 8)); // trueContoh soal. Apakah sebuah hari termasuk akhir pekan? day === "Sat" || day === "Sun". Perhatikan bahwa kamu harus mengulang day === di kedua sisi. Menulis day === "Sat" || "Sun" terdengar wajar dalam bahasa Inggris, tetapi tidak melakukan yang kamu maksud, karena "Sun" sendirian bukan perbandingan. Perbandingan dikerjakan sebelum && dan ||, jadi height >= 120 && age >= 8 tidak perlu tanda kurung tambahan, walaupun menambahkannya tidak pernah merugikan.
Satu gagasan lagi yang akan kamu jumpai nanti: saat JavaScript memerlukan boolean tetapi mendapat nilai lain, beberapa nilai diperlakukan sebagai false. Nilai-nilai falsy ini adalah false, 0, string kosong "", null, undefined, dan NaN. Semua yang lain, termasuk "0" dan "false" sebagai string, dihitung sebagai true.
dan && perlu keduanya true. atau || perlu satu yang true. bukan ! membalik jawabannya.
| boolean | true atau false |
| === | Kesamaan ketat: nilai sama dan tipe sama |
| !== | Ketidaksamaan ketat: tidak sama |
| == | Kesamaan longgar: mengubah tipe dulu (hindari) |
| && | dan: true hanya kalau kedua sisi true |
| || | atau: true kalau setidaknya satu sisi true |
| ! | bukan: membalik true dan false |
| falsy | false, 0, "" (string kosong), null, undefined, NaN |
- Apa yang dicetak kode ini?
console.log(7 > 7);- true
- false
- Apa yang dicetak kode ini?
console.log(7 >= 7);- true
- false
- Apa yang dicetak kode ini?
console.log(3 === "3");- true
- false
- Apa yang dicetak kode ini?
console.log(3 == "3");- true
- false
- Apa yang dicetak kode ini?
console.log(true && false);- true
- false
- Apa yang dicetak kode ini?
console.log(true || false);- true
- false
- Apa yang dicetak kode ini?
const x = 12; console.log(x > 10 && x < 20);- true
- false
- Apa yang dicetak kode ini?
console.log(!(5 > 2));- true
- false
- Apa yang dicetak kode ini?
console.log("Yes" === "yes");- true
- false
- Apa yang dicetak kode ini?
console.log("apple" < "banana");- true
- false
- Nilai mana yang falsy?
"0"0"false"
- Mana yang benar untuk memeriksa apakah day adalah "Sat" atau "Sun"?
day === "Sat" || "Sun"day === "Sat" || day === "Sun"day === "Sat" && day === "Sun"
- Perbandingan menghasilkan true atau false.
- Pakai === dan !==; == mengubah tipe dan sering mengejutkan.
- && perlu keduanya, || perlu satu, ! membalik.
- Ulangi perbandingan lengkap di setiap sisi || dan &&.
- Nilai falsy: false, 0, "", null, undefined, NaN.
Sumber kursus ini (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
Diperiksa: 2026-10-17