Bagaimana Anda menggunakan a switch caseketika 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 caseketika 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 switchdijalankan, ia menemukan casepernyataan yang cocok pertama dan kemudian mengeksekusi setiap baris kode setelah beralih sampai menyentuh breakpernyataan atau akhir dari switch(atau returnpernyataan untuk meninggalkan seluruh fungsi yang mengandung). Ketika Anda dengan sengaja menghilangkan breakkode sehingga di bawah berikutnya casedieksekusi 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 breakpernyataan adalah kesalahan pengkodean yang cukup umum dan merupakan hal pertama yang harus Anda cari jika Anda switchtidak 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 defaultcase, yang akan dieksekusi jika tidak ada case yang cocok - jika Anda tidak menyertakan a defaultdan tidak ada case yang cocok maka tidak ada yang terjadi. Anda dapat (secara opsional) masuk ke case default.
Jadi, dalam contoh kedua saya jika someVar1 akan memanggil someFunction()dan kemudian Anda akan melihat empat peringatan karena jatuh melalui beberapa kasus beberapa di antaranya memiliki peringatan di bawah mereka. Apakah someVar3, 4 atau 5 Anda akan melihat dua peringatan. Jika someVaradalah 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 switchdan 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");
}