Percabangan switch
Menangani banyak pilihan nilai dengan switch-case yang lebih rapi daripada if-else berlapis.
Kapan pakai switch?
Ketika kamu membandingkan satu variabel dengan banyak nilai tetap, switch lebih rapi daripada if-else berlapis-lapis.
let hari = "Senin";
switch (hari) {
case "Senin":
console.log("Awal minggu, semangat!");
break;
case "Jumat":
console.log("Besok libur!");
break;
case "Sabtu":
case "Minggu":
console.log("Waktunya istirahat");
break;
default:
console.log("Hari kerja biasa");
}Beberapa case bisa digabung seperti Sabtu dan Minggu di atas, berguna saat beberapa nilai menghasilkan aksi sama.
Jangan lupa break
Setiap case umumnya diakhiri break agar eksekusi berhenti. Tanpa break, kode akan "jatuh" ke case berikutnya.
let level = 1;
switch (level) {
case 1:
console.log("satu");
// tidak ada break, lanjut ke bawah!
case 2:
console.log("dua");
break;
}
// output: "satu" lalu "dua"Perilaku fallthrough ini kadang disengaja (seperti penggabungan case), tapi lebih sering karena lupa. Selalu tulis break kecuali kamu memang sengaja menggabungkan case.
Catatan teknis: switch memakai perbandingan ketat (===). Jadi case 1 tidak akan cocok dengan string "1". Pastikan tipe data nilai yang dibandingkan konsisten.
switch vs if-else
Pakai switch untuk perbandingan satu nilai dengan banyak kemungkinan tetap. Pakai if-else untuk kondisi kompleks seperti rentang nilai (nilai >= 75) atau gabungan kondisi. Keduanya bisa saling menggantikan, pilih yang paling mudah dibaca.
Studi kasus: kalkulator sederhana
switch cocok untuk memilih operasi berdasarkan simbol:
function hitung(a, b, op) {
switch (op) {
case "+":
return a + b;
case "-":
return a - b;
case "*":
return a * b;
case "/":
return b !== 0 ? a / b : "Tidak bisa dibagi nol";
default:
return "Operator tidak dikenal";
}
}
console.log(hitung(10, 5, "*")); // 50
console.log(hitung(10, 0, "/")); // "Tidak bisa dibagi nol"
console.log(hitung(10, 5, "%")); // "Operator tidak dikenal"Perhatikan tidak ada break karena tiap case langsung return. return sekaligus menghentikan fungsi, jadi break tidak diperlukan. Ini pola umum switch di dalam fungsi dan terlihat rapi.
Kapan switch bukan jawabannya
switch hanya untuk perbandingan nilai tetap dengan ===. Kalau kondisimu berupa rentang atau gabungan, if-else tetap juaranya:
let nilai = 85;
// switch TIDAK bisa menangani ini dengan rapi
if (nilai >= 90) console.log("A");
else if (nilai >= 75) console.log("B");
else console.log("C");Memaksakan switch untuk rentang nilai menghasilkan trik switch(true) yang sulit dibaca dan dianggap bad practice. Pilih struktur yang sesuai sifat kondisinya sejak awal.
Kesimpulan
switch membuat kode pilihan ganda lebih bersih. Ingat dua hal: selalu akhiri case dengan break, dan sediakan default untuk menangani nilai tak terduga.