Belajar Percabangan JavaScript: if, else, dan switch
Halo, Gabuters!
Pada artikel sebelumnya, kita sudah belajar tentang tipe data JavaScript. Kita mengenal string, number, boolean, hingga memahami kenapa "10" dan 10 bisa menghasilkan perilaku yang berbeda.
Sekarang bayangkan kita sedang membuat website BapakGabut.
Ada artikel yang sudah diterbitkan dan ada yang masih draft. Artikel yang sudah diterbitkan boleh dibaca pengunjung, sedangkan artikel draft belum boleh ditampilkan.
Bagaimana program bisa membedakan keduanya?
Kita membutuhkan percabangan, yaitu cara membuat program menjalankan instruksi berbeda berdasarkan kondisi tertentu.
Dalam JavaScript, kita bisa menggunakan if, else, else if, dan switch.
Mari kita pelajari satu per satu.
1. Apa Itu Percabangan?
Percabangan merupakan bagian dari alur kontrol program (control flow).
Tanpa percabangan, program biasanya menjalankan instruksi secara berurutan.
Contohnya:
console.log("Membuka website");console.log("Menampilkan artikel");console.log("Selesai");Ketiga instruksi tersebut dijalankan berurutan.
Namun, bagaimana jika kita hanya ingin menampilkan artikel ketika statusnya sudah terbit?
Di sinilah percabangan digunakan.
Secara sederhana, alurnya seperti ini:
Periksa status artikel | v Apakah sudah terbit? / \ Ya Tidak | | v vTampilkan Jangan tampilkanartikel artikelProgram memeriksa sebuah kondisi, kemudian menentukan instruksi mana yang perlu dijalankan.
2. Operator Perbandingan
Sebelum menggunakan percabangan, kita perlu memahami cara membandingkan nilai.
JavaScript menyediakan beberapa operator perbandingan.
| Operator | Fungsi | Contoh |
|---|---|---|
=== | Sama nilai dan tipe | 10 === 10 |
!== | Tidak sama secara ketat | 10 !== "10" |
> | Lebih besar | 10 > 5 |
< | Lebih kecil | 5 < 10 |
>= | Lebih besar atau sama dengan | 10 >= 10 |
<= | Lebih kecil atau sama dengan | 5 <= 10 |
== | Sama dengan konversi tipe tertentu | 10 == "10" |
!= | Tidak sama dengan konversi tipe tertentu | 10 != "10" |
Hasil perbandingan biasanya berupa boolean: true atau false.
Contohnya:
const jumlahArtikel = 10;
console.log(jumlahArtikel > 5);console.log(jumlahArtikel < 5);console.log(jumlahArtikel === 10);Hasilnya:
truefalsetrueMengapa menggunakan ===?
Perhatikan:
console.log(10 == "10");console.log(10 === "10");Hasilnya:
truefalseOperator == dapat melakukan konversi tipe ketika membandingkan nilai tertentu.
Sedangkan === tidak melakukan konversi tipe seperti itu.
Karena lebih mudah diprediksi, kita akan lebih sering menggunakan === dalam contoh-contoh berikutnya.
Hal yang sama berlaku untuk !==, yang biasanya lebih disarankan daripada !=.
3. Percabangan Menggunakan if
Bentuk percabangan paling sederhana adalah if.
Strukturnya:
if (kondisi) { // Instruksi ketika kondisi bernilai truthy}Contohnya:
const sudahTerbit = true;
if (sudahTerbit) { console.log("Artikel bisa dibaca pengunjung.");}Hasilnya:
Artikel bisa dibaca pengunjung.Karena sudahTerbit bernilai true, kode di dalam blok if dijalankan.
Sekarang ubah menjadi:
const sudahTerbit = false;
if (sudahTerbit) { console.log("Artikel bisa dibaca pengunjung.");}Tidak ada pesan yang ditampilkan.
Kenapa?
Karena kondisinya bernilai false.
Kondisi tidak harus berupa boolean langsung
Kita juga bisa menggunakan ekspresi perbandingan.
const jumlahArtikel = 8;
if (jumlahArtikel > 5) { console.log("Artikel sudah lebih dari lima.");}Hasilnya:
Artikel sudah lebih dari lima.Ekspresi jumlahArtikel > 5 menghasilkan true, sehingga blok if dijalankan.
4. Menggunakan if dan else
Bagaimana kalau kita ingin menjalankan instruksi lain ketika kondisi tidak terpenuhi?
Gunakan else.
Strukturnya:
if (kondisi) { // Ketika kondisi truthy} else { // Ketika kondisi falsy}Contohnya:
const sudahLogin = false;
if (sudahLogin) { console.log("Selamat datang kembali!");} else { console.log("Silakan login terlebih dahulu.");}Hasilnya:
Silakan login terlebih dahulu.Karena sudahLogin bernilai false, program menjalankan blok else.
Sekarang coba ubah nilainya menjadi true.
Hasilnya akan berubah menjadi:
Selamat datang kembali!Dengan if/else, program bisa memilih satu dari dua jalur.
5. Menggunakan else if untuk Banyak Kondisi
Tidak semua keputusan hanya memiliki dua kemungkinan.
Misalnya, kita ingin menentukan kategori nilai berdasarkan skor.
Aturannya:
- Nilai 90 ke atas: Sangat Baik.
- Nilai 75 sampai 89: Baik.
- Nilai 60 sampai 74: Cukup.
- Nilai di bawah 60: Perlu Belajar Lagi.
Kita bisa menggunakan else if.
const nilai = 82;
if (nilai >= 90) { console.log("Sangat Baik");} else if (nilai >= 75) { console.log("Baik");} else if (nilai >= 60) { console.log("Cukup");} else { console.log("Perlu Belajar Lagi");}Hasilnya:
BaikJavaScript memeriksa kondisi dari atas ke bawah.
Ketika menemukan kondisi pertama yang bernilai true, blok tersebut dijalankan dan bagian else if atau else berikutnya dilewati.
Karena itu, urutan kondisi sangat penting.
Contoh urutan yang salah
const nilai = 95;
if (nilai >= 60) { console.log("Cukup");} else if (nilai >= 90) { console.log("Sangat Baik");}Hasilnya:
CukupPadahal nilainya 95.
Ini terjadi karena kondisi nilai >= 60 sudah terpenuhi terlebih dahulu.
Program tidak melanjutkan pemeriksaan ke else if berikutnya.
Jadi, ketika membuat rentang nilai seperti ini, susun kondisi dengan urutan yang tepat.
6. Operator Logika: &&, ||, dan !
Kadang kita perlu memeriksa lebih dari satu kondisi sekaligus.
JavaScript menyediakan operator logika.
| Operator | Nama | Kegunaan |
|---|---|---|
&& | AND | Kedua kondisi harus truthy |
| ` | ` | |
! | NOT | Membalik nilai truthy/falsy menjadi boolean kebalikannya |
Operator AND (&&)
Misalnya, artikel hanya boleh ditampilkan jika sudah terbit dan tidak disembunyikan.
const sudahTerbit = true;const disembunyikan = false;
if (sudahTerbit && !disembunyikan) { console.log("Artikel ditampilkan.");}Hasilnya:
Artikel ditampilkan.Kedua syarat terpenuhi.
sudahTerbit bernilai true, sedangkan !disembunyikan juga menghasilkan true.
Operator OR (||)
Misalnya, pengguna boleh mengakses halaman khusus jika memiliki peran admin atau editor.
const peran = "editor";
if (peran === "admin" || peran === "editor") { console.log("Akses diberikan.");}Hasilnya:
Akses diberikan.Karena salah satu kondisi terpenuhi.
Operator NOT (!)
Operator ! digunakan untuk membalik nilai dalam konteks boolean.
const sudahLogin = false;
if (!sudahLogin) { console.log("Pengguna belum login.");}Hasilnya:
Pengguna belum login.Perhatikan perilaku short-circuit
Operator && dan || juga mempunyai perilaku short-circuit.
Artinya, JavaScript tidak selalu mengevaluasi seluruh operand jika hasilnya sudah dapat ditentukan.
Contohnya:
const sudahLogin = false;
sudahLogin && console.log("Tampilkan dashboard");Karena sudahLogin bernilai false, bagian console.log() tidak dijalankan.
Untuk pemula, saya tetap menyarankan menggunakan if ketika ingin menjalankan instruksi berdasarkan kondisi karena lebih mudah dibaca.
Perlu diingat juga bahwa && dan || tidak selalu menghasilkan boolean. Keduanya dapat mengembalikan salah satu nilai operand.
7. Percabangan Bersarang (Nested if)
Kita juga bisa menempatkan if di dalam if lainnya.
Contohnya:
const sudahLogin = true;const peran = "admin";
if (sudahLogin) { console.log("Pengguna sudah login.");
if (peran === "admin") { console.log("Menu admin ditampilkan."); }}Hasilnya:
Pengguna sudah login.Menu admin ditampilkan.Teknik ini disebut nested if.
Nested if berguna ketika suatu pemeriksaan hanya relevan setelah kondisi sebelumnya terpenuhi.
Namun, jika terlalu banyak percabangan bersarang, kode akan semakin sulit dibaca.
Kadang kita bisa menyederhanakannya menggunakan operator logika.
if (sudahLogin && peran === "admin") { console.log("Menu admin ditampilkan.");}Kedua pendekatan dapat digunakan. Pilih yang paling mudah dipahami sesuai kebutuhan.
8. Menggunakan switch
Selain if/else, JavaScript menyediakan switch.
switch berguna ketika kita ingin memilih tindakan berdasarkan beberapa kemungkinan nilai dari satu ekspresi.
Contohnya, kita ingin menampilkan nama kategori berdasarkan kode.
const kodeKategori = "JS";
switch (kodeKategori) { case "HTML": console.log("Kategori HTML"); break;
case "CSS": console.log("Kategori CSS"); break;
case "JS": console.log("Kategori JavaScript"); break;
default: console.log("Kategori tidak ditemukan");}Hasilnya:
Kategori JavaScriptCara kerja switch
Pertama, JavaScript mengevaluasi nilai di dalam switch.
Kemudian, nilainya dicocokkan dengan setiap case.
Pencocokan switch menggunakan perbandingan ketat, sehingga 10 dan "10" tidak dianggap sama.
Ketika menemukan case yang cocok, instruksi pada bagian tersebut dijalankan.
Apa fungsi break?
break digunakan untuk menghentikan eksekusi switch.
Tanpa break, eksekusi bisa berlanjut ke instruksi pada case berikutnya.
Contohnya:
const kode = "A";
switch (kode) { case "A": console.log("Kategori A");
case "B": console.log("Kategori B");
default: console.log("Kategori lainnya");}Hasilnya:
Kategori AKategori BKategori lainnyaIni disebut fall-through.
Perilaku tersebut kadang memang digunakan dengan sengaja, tetapi bisa menjadi sumber bug jika kita lupa menambahkan break.
Menggabungkan beberapa case
Kita juga bisa membuat beberapa case menjalankan instruksi yang sama.
const hari = "Sabtu";
switch (hari) { case "Sabtu": case "Minggu": console.log("Akhir pekan"); break;
default: console.log("Hari kerja");}Hasilnya:
Akhir pekan9. Kapan Menggunakan if/else dan switch?
Keduanya sama-sama digunakan untuk percabangan, tetapi cocok untuk kebutuhan yang berbeda.
Gunakan if/else ketika:
- Membandingkan rentang angka.
- Menggunakan operator
>,<,>=, atau<=. - Menggabungkan beberapa kondisi logika.
- Memerlukan pemeriksaan yang tidak hanya berdasarkan satu nilai.
Gunakan switch ketika:
- Memeriksa beberapa kemungkinan nilai dari satu ekspresi.
- Setiap nilai memiliki tindakan yang berbeda.
- Banyak pemeriksaan kesetaraan membuat
if/elsesulit dibaca.
Contohnya, untuk menentukan kategori nilai berdasarkan rentang angka, if/else biasanya lebih sesuai.
Sedangkan untuk memilih tindakan berdasarkan kode kategori "HTML", "CSS", atau "JS", switch bisa lebih mudah dibaca.
Tidak ada aturan bahwa salah satunya selalu lebih baik.
Yang penting adalah memilih struktur yang jelas dan mudah dipelihara.
10. Mengenal Operator Ternary
JavaScript juga memiliki operator ternary.
Operator ini berguna untuk memilih salah satu dari dua nilai berdasarkan kondisi.
Strukturnya:
kondisi ? nilaiJikaBenar : nilaiJikaSalahContohnya:
const sudahTerbit = true;
const status = sudahTerbit ? "Terbit" : "Draft";
console.log(status);Hasilnya:
TerbitContoh tersebut setara dengan:
const sudahTerbit = true;let status;
if (sudahTerbit) { status = "Terbit";} else { status = "Draft";}
console.log(status);Ternary cocok untuk kondisi sederhana yang memilih satu dari dua nilai.
Namun, hindari membuat ternary bersarang terlalu panjang karena dapat mengurangi keterbacaan kode.
Jika logikanya mulai rumit, if/else sering menjadi pilihan yang lebih jelas.
11. Praktik: Menentukan Status Artikel
Sekarang kita buat contoh yang lebih dekat dengan pengelolaan website BapakGabut.
Bayangkan sebuah artikel mempunyai data berikut:
const judulArtikel = "Belajar JavaScript";const statusArtikel = "published";const jumlahKata = 1200;Kita ingin menentukan apakah artikel boleh ditampilkan.
Aturannya:
- Artikel dengan status
"published"dapat ditampilkan. - Artikel dengan status
"draft"belum dapat ditampilkan. - Status lain dianggap tidak dikenal.
Kita bisa menggunakan switch.
const judulArtikel = "Belajar JavaScript";const statusArtikel = "published";const jumlahKata = 1200;
console.log(`Judul: ${judulArtikel}`);console.log(`Jumlah kata: ${jumlahKata}`);
switch (statusArtikel) { case "published": console.log("Status: Artikel sudah diterbitkan"); console.log("Artikel boleh ditampilkan"); break;
case "draft": console.log("Status: Artikel masih draft"); console.log("Artikel belum ditampilkan"); break;
default: console.log("Status artikel tidak dikenal");}Hasilnya:
Judul: Belajar JavaScriptJumlah kata: 1200Status: Artikel sudah diterbitkanArtikel boleh ditampilkanSekarang kita tambahkan pemeriksaan jumlah kata.
Misalnya, untuk keperluan latihan, kita ingin memberikan label "Artikel panjang" jika jumlah kata minimal 1000.
if (jumlahKata >= 1000) { console.log("Kategori panjang: Artikel panjang");} else { console.log("Kategori panjang: Artikel singkat");}Hasilnya:
Kategori panjang: Artikel panjangPerlu dicatat bahwa batas 1000 kata ini hanyalah aturan contoh dalam program latihan, bukan standar kualitas artikel atau persyaratan mesin pencari.
Menambahkan beberapa syarat
Misalnya, kita ingin memberikan label "Siap dibaca" jika artikel sudah terbit dan memiliki judul yang tidak kosong.
const judulArtikel = "Belajar JavaScript";const statusArtikel = "published";
if (statusArtikel === "published" && judulArtikel !== "") { console.log("Artikel siap dibaca.");} else { console.log("Artikel belum siap dibaca.");}Hasilnya:
Artikel siap dibaca.Dari latihan ini, kita sudah menggunakan operator perbandingan, operator logika, if/else, dan switch.
12. Kesalahan Umum Saat Membuat Percabangan
Menggunakan = ketika ingin membandingkan
Perhatikan:
let status = "draft";
if (status = "published") { console.log("Artikel terbit");}Kode tersebut tidak membandingkan nilai.
Operator = melakukan assignment, sehingga status justru berubah menjadi "published".
Karena string tersebut bersifat truthy, blok if dijalankan.
Gunakan === untuk perbandingan:
if (status === "published") { console.log("Artikel terbit");}Salah mengurutkan else if
const nilai = 95;
if (nilai >= 60) { console.log("Cukup");} else if (nilai >= 90) { console.log("Sangat Baik");}Kondisi pertama sudah terpenuhi, sehingga kondisi berikutnya tidak diperiksa.
Lupa break pada switch
Tanpa break, instruksi dapat berlanjut ke case berikutnya.
Jika tidak menginginkan fall-through, pastikan setiap jalur yang relevan dihentikan dengan benar.
Menganggap kondisi harus selalu boolean
const nama = "BapakGabut";
if (nama) { console.log("Nama tersedia");}Kode tersebut valid karena string tidak kosong bersifat truthy.
Namun, untuk kode yang mudah dipahami, pemeriksaan eksplisit kadang lebih baik.
Misalnya:
if (nama !== "") { console.log("Nama tersedia");}Terlalu banyak nested if
Percabangan bersarang yang terlalu dalam membuat alur program sulit diikuti.
Jika memungkinkan, sederhanakan kondisi atau pisahkan logika ke dalam function.
Kita akan mempelajari function pada JavaScript #5.
13. Latihan Mandiri
Sekarang giliran Gabuters mencoba.
Buat program sederhana untuk menentukan status sebuah artikel.
Gunakan data berikut:
const judul = "Belajar Percabangan JavaScript";const status = "draft";const jumlahKata = 850;const kategori = "javascript";Buat program dengan aturan:
- Jika status
"published", tampilkan pesan bahwa artikel sudah terbit. - Jika status
"draft", tampilkan pesan bahwa artikel belum diterbitkan. - Jika status selain keduanya, tampilkan pesan bahwa status tidak dikenal.
- Jika jumlah kata minimal 1000, tampilkan
"Artikel panjang". Jika tidak, tampilkan"Artikel singkat". - Gunakan
switchuntuk menampilkan nama kategori berdasarkan kode"html","css", atau"javascript".
Sebagai tantangan tambahan, buat variabel:
const sudahLogin = true;const peran = "editor";Tampilkan pesan "Boleh mengedit artikel" hanya jika pengguna sudah login dan memiliki peran "admin" atau "editor".
Coba juga ubah beberapa nilai variabel untuk melihat bagaimana hasil program berubah.
Ingat, aturan akses pada latihan ini hanya simulasi logika. Pada aplikasi nyata, izin mengedit tetap harus diperiksa di server, bukan hanya melalui JavaScript di browser.
14. Penutup
Pada artikel ini, kita sudah belajar bagaimana JavaScript mengambil keputusan menggunakan percabangan.
Kita mengenal operator perbandingan, operator logika, if, else, else if, switch, dan operator ternary.
Kita juga belajar bahwa urutan kondisi, pemilihan operator, serta penggunaan break dapat memengaruhi hasil program.
Dengan percabangan, program tidak lagi sekadar menjalankan instruksi secara berurutan. Program sudah bisa menentukan tindakan berdasarkan kondisi tertentu.
Tetapi bagaimana jika kita ingin menjalankan instruksi yang sama berkali-kali?
Misalnya, menampilkan angka 1 sampai 100, atau memproses daftar artikel satu per satu.
Apakah kita harus menulis console.log() sebanyak 100 kali?
Tentu tidak.
Pada artikel berikutnya, kita akan belajar Belajar Perulangan JavaScript: for, while, dan do…while.
Sampai jumpa di artikel berikutnya, Gabuters!
JavaScript
SelesaiBagikan Artikel
Buat poster berbagi atau salin tautan artikel ini.
Lanjut membaca
Coba jalur lain
Pilihan konsisten dari artikel lain
Terakhir diperbarui pada , 21 hari yang lalu
Sebagian konten mungkin sudah tidak berlaku