- Bab 2 dari 12
- 25 menit
- 1 latihan kode
- 4 soal kuis
Operator dan Struktur Kontrol
Di bab ini (10 bagian)
Tujuan bab ini
- Memakai operator aritmatika, penugasan, perbandingan, dan logika dengan benar.
- Menjelaskan beda
==dan===serta alasan memilih===. - Menentukan nilai truthy dan falsy, lalu memanfaatkan short-circuit.
- Menulis keputusan dengan if/else if/else, ternary, dan switch.
Operator aritmatika dan penugasan
Operator adalah simbol yang melakukan operasi pada nilai. Yang paling akrab tentu operator hitung.
| Operator | Arti | Contoh | Hasil |
|---|---|---|---|
+ | tambah | 7 + 2 | 9 |
- | kurang | 7 - 2 | 5 |
* | kali | 7 * 2 | 14 |
/ | bagi | 7 / 2 | 3.5 |
% | sisa bagi (modulo) | 7 % 2 | 1 |
** | pangkat (ES2016) | 2 ** 3 | 8 |
Pembagian di JavaScript selalu menghasilkan desimal kalau tidak habis, karena hanya ada satu tipe number. Mau bilangan bulat? Pakai Math.floor(7 / 2) yang menghasilkan 3. Modulo sangat berguna untuk mengecek genap/ganjil: n % 2 === 0 artinya genap.
Operator penugasan menyingkat pola "ubah nilai lalu simpan lagi":
Perbandingan: == vs ===
Operator perbandingan menghasilkan boolean: >, <, >=, <=, ==, !=, ===, !==.
Bedanya penting:
==(loose equality) mengubah tipe dulu kalau tipenya berbeda, baru membandingkan.===(strict equality) membandingkan nilai dan tipe tanpa konversi.
Aturan konversi == panjang dan penuh kejutan, jadi kebiasaan yang disarankan hampir semua style guide: selalu pakai === dan !==. Kodemu jadi bisa ditebak. Satu catatan untuk object: === membandingkan referensi, jadi {} === {} bernilai false karena itu dua object berbeda di memori.
Operator logika dan short-circuit
| Operator | Nama | Bernilai true bila |
|---|---|---|
&& | AND | kedua sisi truthy |
|| | OR | salah satu sisi truthy |
! | NOT | membalik nilai |
Di JavaScript, && dan || sebenarnya mengembalikan salah satu operand, bukan selalu true/false. Mereka juga berhenti lebih awal (short-circuit):
a || b: kalauatruthy, langsung kembalikanatanpa melihatb. Kalau tidak, kembalikanb.a && b: kalauafalsy, langsung kembalikana. Kalau tidak, kembalikanb.
Analogi short-circuit: kamu cari kunci di saku. Begitu ketemu di saku pertama, kamu tidak perlu cek saku lain.
Truthy dan falsy
Setiap nilai di JavaScript bisa dianggap benar atau salah saat dipakai sebagai kondisi. Yang perlu dihafal cukup daftar falsy, karena sisanya truthy:
| Nilai falsy |
|---|
false |
0, -0, 0n |
"" (string kosong) |
null |
undefined |
NaN |
Semua yang lain truthy, termasuk yang sering menjebak: "0", "false", " " (spasi), [] (array kosong), dan {} (object kosong).
if, else if, else
if menjalankan blok kode hanya bila kondisinya truthy. Kondisi diperiksa dari atas ke bawah, dan begitu satu cocok, sisanya dilewati.
Urutan itu penting. Kalau nilai >= 60 ditulis paling atas, nilai 95 juga akan dapat "B" karena kondisi pertama sudah cocok. Mulailah dari kondisi yang paling ketat.
Ternary
Ternary adalah if/else versi satu baris yang menghasilkan nilai: kondisi ? nilaiJikaBenar : nilaiJikaSalah.
Pakai ternary untuk pilihan sederhana. Kalau sudah bertingkat tiga atau lebih, kembali ke if/else supaya mudah dibaca.
switch
switch cocok saat kamu membandingkan satu nilai dengan banyak kemungkinan tetap. Perbandingannya memakai ===.
break menghentikan switch. Tanpa break, eksekusi akan "jatuh" (fall-through) ke case berikutnya. Kadang itu disengaja, seperti case 6 dan case 7 yang berbagi satu blok di atas. default dijalankan kalau tidak ada case yang cocok.
Kesalahan umum
- Memakai
=di dalam kondisi.if (x = 5)memberi nilai, bukan membandingkan, dan selalu truthy. Tulisx === 5. - Mengandalkan
==."" == 0bernilaitrue. Pakai===. - Lupa
breakdi switch. Case berikutnya ikut jalan. - Menganggap array kosong falsy.
[]truthy; cek panjangnya denganarr.length === 0. - Memakai
||untuk default angka.0 || 10menghasilkan10, padahal 0 mungkin nilai sah. Operator??(nullish coalescing) dibahas di bab fitur modern.
Rangkuman
- Aritmatika:
+ - * / % **; penugasan seperti+=menyingkat perubahan nilai. ===membandingkan nilai dan tipe tanpa konversi, jadi pilih itu daripada==.&&dan||mengembalikan salah satu operand dan berhenti lebih awal (short-circuit).- Falsy hanya
false,0,-0,0n,"",null,undefined,NaN; sisanya truthy. - if/else if/else memeriksa dari atas, ternary untuk pilihan singkat, switch untuk banyak nilai tetap dengan
break.
Slide 6 sampai 7 dari deck JavaScript. Penjelasan lengkapnya ada di mode Baca.

Selesaikan bab ini
- 1. Baca materi
- 2. Latihan kode (1)
- 3. Kuis (4 soal)
Latihan kode: Nilai huruf dan nama hari
Lengkapi dua fungsi berikut:
nilaiHuruf(skor)mengembalikan"A"untuk skor 80 ke atas,"B"untuk 70-79,"C"untuk 60-69, dan"D"di bawah 60. Pakai if/else if/else.namaHari(n)mengembalikan"Senin"untuk 1,"Selasa"untuk 2,"Rabu"untuk 3,"Akhir pekan"untuk 6 atau 7, dan"Tidak dikenal"untuk nilai lain. Pakai switch.
Contoh: nilaiHuruf(75) menghasilkan "B", namaHari(7) menghasilkan "Akhir pekan".
Cek pemahaman
1Apa output kode berikut?
console.log(5 == "5", 5 === "5");2Manakah nilai berikut yang falsy?
3Apa output kode berikut?
const nama = ""; console.log(nama || "Tamu");4Di dalam switch, case yang tidak diakhiri break akan lanjut menjalankan case berikutnya.
