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:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Karena jawaban yang lain menjelaskan cara melakukannya tanpa benar-benar menjelaskan mengapa itu bekerja:
Ketika switch
dijalankan, ia menemukan case
pernyataan yang cocok pertama dan kemudian mengeksekusi setiap baris kode setelah beralih sampai menyentuh break
pernyataan atau akhir dari switch
(atau return
pernyataan untuk meninggalkan seluruh fungsi yang mengandung). Ketika Anda dengan sengaja menghilangkan break
kode sehingga di bawah berikutnya case
dieksekusi juga itu disebut fall-through . Jadi untuk persyaratan OP:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Lupa untuk memasukkan break
pernyataan adalah kesalahan pengkodean yang cukup umum dan merupakan hal pertama yang harus Anda cari jika Anda switch
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:
switch (someVar) {
case 1:
someFunction();
alert("It was 1");
// fall through
case 2:
alert("The 2 case");
// fall through
case 3:
// fall through
case 4:
// fall through
case 5:
alert("The 5 case");
// fall through
case 6:
alert("The 6 case");
break;
case 7:
alert("Something else");
break;
case 8:
// fall through
default:
alert("The end");
break;
}
Anda juga dapat (secara opsional) memasukkan sebuah default
case, yang akan dieksekusi jika tidak ada case yang cocok - jika Anda tidak menyertakan a default
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 memanggil someFunction()
dan kemudian Anda akan melihat empat peringatan karena jatuh melalui beberapa kasus beberapa di antaranya memiliki peringatan di bawah mereka. Apakah someVar
3, 4 atau 5 Anda akan melihat dua peringatan. Jika someVar
adalah 7 Anda akan melihat "Sesuatu yang lain" dan jika itu adalah 8 atau nilai lain Anda akan melihat "Akhir".
Anda harus mengubahnya!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
Lupakan switch
dan break
, mari bermain dengan if
. Dan bukannya menegaskan
if(pageid === "listing-page" || pageid === "home-page")
mari kita buat beberapa array dengan case dan periksa dengan Array.prototype.includes ()
var caseA = ["listing-page", "home-page"];
var caseB = ["details-page", "case04", "case05"];
if(caseA.includes(pageid)) {
alert("hello");
}
else if (caseB.includes(pageid)) {
alert("goodbye");
}
else {
alert("there is no else case");
}