Bagaimana Anda menggunakan a switch
case
ketika Anda perlu menguji a atau b dalam kasus yang sama?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Bagaimana Anda menggunakan a switch
case
ketika Anda perlu menguji a atau b dalam kasus yang sama?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Jawaban:
Anda dapat menggunakan fall-through:
sumber
Karena jawaban yang lain menjelaskan cara melakukannya tanpa benar-benar menjelaskan mengapa itu bekerja:
Ketika
switch
dijalankan, ia menemukancase
pernyataan yang cocok pertama dan kemudian mengeksekusi setiap baris kode setelah beralih sampai menyentuhbreak
pernyataan atau akhir dariswitch
(ataureturn
pernyataan untuk meninggalkan seluruh fungsi yang mengandung). Ketika Anda dengan sengaja menghilangkanbreak
kode sehingga di bawah berikutnyacase
dieksekusi juga itu disebut fall-through . Jadi untuk persyaratan OP:Lupa untuk memasukkan
break
pernyataan adalah kesalahan pengkodean yang cukup umum dan merupakan hal pertama yang harus Anda cari jika Andaswitch
tidak bekerja seperti yang Anda harapkan. Untuk alasan itu beberapa orang suka memberikan komentar untuk mengatakan "gagal" untuk memperjelas kapan pernyataan break dihilangkan dengan sengaja. Saya melakukannya dalam contoh berikut karena ini sedikit lebih rumit dan menunjukkan bagaimana beberapa kasus dapat menyertakan kode untuk dieksekusi sebelum mereka gagal:Anda juga dapat (secara opsional) memasukkan sebuah
default
case, yang akan dieksekusi jika tidak ada case yang cocok - jika Anda tidak menyertakan adefault
dan tidak ada case yang cocok maka tidak ada yang terjadi. Anda dapat (secara opsional) masuk ke case default.Jadi, dalam contoh kedua saya jika
someVar
1 akan memanggilsomeFunction()
dan kemudian Anda akan melihat empat peringatan karena jatuh melalui beberapa kasus beberapa di antaranya memiliki peringatan di bawah mereka. ApakahsomeVar
3, 4 atau 5 Anda akan melihat dua peringatan. JikasomeVar
adalah 7 Anda akan melihat "Sesuatu yang lain" dan jika itu adalah 8 atau nilai lain Anda akan melihat "Akhir".sumber
Anda perlu membuat dua
case
label.Kontrol akan jatuh dari label pertama ke yang kedua, sehingga mereka berdua akan menjalankan kode yang sama.
sumber
Anda harus mengubahnya!
sumber
Lupakan
switch
danbreak
, mari bermain denganif
. Dan bukannya menegaskanmari kita buat beberapa array dengan case dan periksa dengan Array.prototype.includes ()
sumber
Gunakan koma untuk memisahkan kasing
sumber