switch adalah alternatif untuk if...else if...else ketika kamu perlu membandingkan satu nilai dengan banyak kemungkinan yang sudah pasti.
let hari = 'Senin';
switch (hari) {
case 'Senin':
console.log('Hari kerja pertama.');
break;
case 'Selasa':
console.log('Hari kerja kedua.');
break;
case 'Rabu':
console.log('Hari pertengahan minggu.');
break;
case 'Kamis':
console.log('Hampir akhir pekan!');
break;
case 'Jumat':
console.log('Hore, besok libur!');
break;
case 'Sabtu':
case 'Minggu':
console.log('Weekend!');
break;
default:
console.log('Hari tidak dikenal.');
}
breakTanpa break, eksekusi akan "jatuh" ke case berikutnya (fall-through):
let angka = 2;
switch (angka) {
case 1:
console.log('Satu');
// tidak ada break — akan lanjut ke case 2!
case 2:
console.log('Dua');
// tidak ada break — akan lanjut ke case 3!
case 3:
console.log('Tiga');
break;
}
// Output: "Dua", "Tiga" — bukan hanya "Dua"!
Intentional fall-through — terkadang dipakai dengan sengaja:
let bulan = 4; // April
switch (bulan) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
console.log('31 hari');
break;
case 4:
case 6:
case 9:
case 11:
console.log('30 hari'); // April masuk sini
break;
case 2:
console.log('28 atau 29 hari');
break;
}
let statusPesanan = 'dikirim';
switch (statusPesanan) {
case 'menunggu':
console.log('⏳ Pesanan sedang menunggu konfirmasi');
break;
case 'diproses':
console.log('🔄 Pesanan sedang diproses');
break;
case 'dikirim':
console.log('🚚 Pesanan sedang dalam pengiriman');
break;
case 'selesai':
console.log('✅ Pesanan telah diterima');
break;
case 'dibatalkan':
console.log('❌ Pesanan telah dibatalkan');
break;
default:
console.log('Status tidak dikenal');
}
// Switch lebih bersih untuk banyak nilai pasti
switch (kode) {
case 200: console.log('OK'); break;
case 201: console.log('Created'); break;
case 404: console.log('Not Found'); break;
case 500: console.log('Server Error'); break;
default: console.log('Status tidak dikenal');
}
// if...else if lebih cocok untuk kondisi rentang
if (nilai >= 90) { grade = 'A'; }
else if (nilai >= 80) { grade = 'B'; }
else if (nilai >= 70) { grade = 'C'; }
| Situasi | Gunakan |
|---|---|
| Membandingkan satu variabel dengan banyak nilai pasti | switch |
Kondisi dengan rentang angka (>, <, >=) |
if...else if |
Kondisi boolean yang kompleks (&&, ||) |
if...else if |
💡 Tips: Selalu sertakan
breakdi akhir setiap case kecuali kamu sengaja menggunakan fall-through. Selalu tambahkandefaultsebagai penanganan nilai yang tidak terduga — mirip sepertielsedi if-else. Perlu diketahui bahwaswitchmenggunakan perbandingan strict equality (===) secara internal. 🔒
Kursus
JavaScript Dasar
Kategori
Kontrol Alur
Durasi Pelajaran
20 menit