Menu

Switch Case JavaScript: Case, Break, dan Fallthrough

Cara kerja pernyataan switch di JavaScript: case, break, default, fallthrough, dan kapan switch lebih baik daripada rangkaian if/else.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Switch memilih satu cabang dari banyak pilihan

switch adalah pernyataan alur kontrol untuk saat kamu membandingkan satu nilai dengan beberapa pilihan yang sudah diketahui. Rangkaian if/else if/else bisa melakukan tugas yang sama, tapi begitu kamu mengecek variabel yang sama tiga atau empat kali berturut-turut, switch lebih enak dibaca.

Bentuk dasarnya:

Kalau dibaca dari atas ke bawah: JavaScript mengevaluasi day, membandingkannya dengan setiap label case, lalu menjalankan blok yang cocok. default menangkap apa pun yang tidak cocok, seperti else terakhir. Urutan membacanya adalah nilai → case → kode.

Bagaimana pencocokan sebenarnya bekerja

switch membandingkan dengan strict equality, yaitu operator ===. Tanpa konversi tipe, tanpa pencocokan longgar. case 1: akan cocok dengan angka 1 tapi tidak dengan string "1".

Hanya case kedua yang cocok. Kalau kamu pernah heran kenapa switch-mu tidak terpicu, penyebab yang biasa adalah perbedaan string dan angka yang berasal dari input form atau parameter URL.

break yang menghentikan alurnya

Bagian inilah yang sering menjebak orang. Label case adalah target lompatan, bukan blok yang berdiri sendiri. Begitu eksekusi mendarat di case yang cocok, ia terus berjalan baris demi baris, langsung menembus label case berikutnya, sampai bertemu break, return, atau akhir switch.

Lihat apa yang terjadi tanpa break:

Yang cocok adalah "editor", tapi kamu tetap mendapat can edit, can view, dan logged in. Itulah fallthrough: eksekusi jatuh ke setiap case berikutnya karena tidak ada yang menyuruhnya berhenti.

Tambahkan break, dan perilakunya jadi benar:

Kebiasaan yang baik: setiap case diakhiri break, kecuali kamu memang menginginkan fallthrough.

Fallthrough yang disengaja untuk mengelompokkan

Fallthrough tidak selalu kesalahan. Menghilangkan break adalah cara rapi untuk mengatakan "semua case ini melakukan hal yang sama":

Label case kosong yang ditumpuk berbagi blok di bawahnya. Perhatikan bahwa tidak perlu break setelah return: fungsinya langsung keluar sepenuhnya. return di dalam switch melompati semua yang seharusnya menyusul.

Saat kamu memang ingin fallthrough di antara case yang tidak kosong, tinggalkan komentar supaya pembaca berikutnya tidak "memperbaikinya":

default tidak harus di akhir

Menurut kebiasaan, default ditaruh di paling bawah, dan di situlah kebanyakan pembaca mengharapkannya. Tapi secara teknis ia hanyalah label lain: ia cocok saat tidak ada case yang cocok, di mana pun posisinya. Kalau kamu menaruh default di tengah tanpa break, ia akan jatuh ke apa pun yang ada di bawahnya. Taruh di akhir, tutup dengan break (atau tidak, karena tidak ada lagi yang menyusul), dan dirimu di masa depan akan berterima kasih.

Scope variabel di dalam case

Semua case berbagi satu block scope, yaitu seluruh switch. Mendeklarasikan let atau const dengan nama yang sama di dua case akan melempar error deklarasi ulang:

switch (x) {
    case 1:
        let msg = "one";
        break;
    case 2:
        let msg = "two";   // SyntaxError: Identifier 'msg' has already been declared
        break;
}

Solusinya adalah satu blok per case, dengan membungkus isinya dalam { }:

Sekarang setiap msg tinggal di scope-nya sendiri dan bentroknya hilang. Ini perlu diingat setiap kali sebuah case butuh logika lebih dari satu atau dua baris.

switch vs if/else

switch unggul saat kamu menguji satu nilai terhadap banyak pilihan tetap: kode HTTP, tipe action Redux, nama perintah, string yang mirip enum. Nilainya muncul sekali di atas, dan mata pembaca bisa memindai label case seperti daftar isi.

if/else lebih baik saat:

  • Kamu membandingkan rentang (score >= 90, score >= 75).
  • Kondisinya melibatkan variabel yang berbeda atau ekspresi boolean.
  • Kamu ingin loose equality atau perbandingan khusus (switch selalu ===).

Alternatif modern yang umum untuk pola pertama adalah lookup object:

Tiga baris alih-alih switch sembilan baris. Saat case-nya murni pemetaan data tanpa logika sungguhan, object (atau Map) biasanya lebih mudah dibaca. Pakai switch saat setiap case melakukan pekerjaan sungguhan.

Berikutnya: for loop

switch menangani satu keputusan terhadap banyak pilihan. Bagian alur kontrol berikutnya adalah pengulangan, yaitu menjalankan blok kode yang sama berulang-ulang. Itulah gunanya loop for, yang dibahas berikutnya.

Pertanyaan yang sering diajukan

Bagaimana cara kerja pernyataan switch di JavaScript?

switch membandingkan satu nilai dengan serangkaian label case memakai strict equality (===). Saat menemukan yang cocok, ia menjalankan kode untuk case itu dan terus berjalan sampai bertemu break atau akhir blok. Klausa default yang opsional berjalan kalau tidak ada case yang cocok.

Apa itu fallthrough pada switch JavaScript?

Kalau sebuah case tidak diakhiri break (atau return), eksekusi terus jatuh ke kode case berikutnya, walaupun label case itu tidak cocok. Kadang ini berguna untuk mengelompokkan case yang logikanya sama, tapi lebih sering ini bug. Selalu akhiri case dengan break, kecuali kamu memang sengaja menginginkan fallthrough.

Kapan sebaiknya memakai switch alih-alih if/else di JavaScript?

Pakai switch saat kamu membandingkan satu nilai dengan banyak pilihan tetap: kode status HTTP, tipe action, perintah berupa string. Pakai if/else saat kamu butuh rentang, beberapa variabel, atau ekspresi boolean. Ingat bahwa switch memakai strict equality, jadi case '1' tidak akan cocok dengan angka 1.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai