คุณจะใช้ a switch
case
เมื่อคุณต้องการทดสอบa หรือ b อย่างไรในกรณีเดียวกันได้อย่างไร
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
คุณจะใช้ a switch
case
เมื่อคุณต้องการทดสอบa หรือ b อย่างไรในกรณีเดียวกันได้อย่างไร
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
คำตอบ:
คุณสามารถใช้ fall-through:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
เนื่องจากคำตอบอื่น ๆ อธิบายถึงวิธีการทำโดยไม่ต้องอธิบายว่าทำไมมันถึงได้ผลจริง:
เมื่อswitch
เรียกใช้งานจะพบcase
คำสั่งแรกที่ตรงกันจากนั้นเรียกใช้งานแต่ละบรรทัดของรหัสหลังจากสวิตช์จนกว่าจะพบbreak
คำสั่งหรือจุดสิ้นสุดของswitch
(หรือreturn
คำสั่งเพื่อออกจากฟังก์ชันที่มีทั้งหมด) เมื่อคุณจงใจละเว้นbreak
เพื่อให้รหัสที่อยู่ภายใต้การต่อไปcase
ได้รับการดำเนินเกินไปที่จะเรียกว่าฤดูใบไม้ร่วงผ่าน ดังนั้นสำหรับความต้องการของ OP:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
การลืมที่จะรวมbreak
คำแถลงเป็นข้อผิดพลาดในการเขียนโค้ดที่พบได้บ่อยและเป็นสิ่งแรกที่คุณควรมองหาหากคุณswitch
ไม่ได้ทำงานตามที่คาดไว้ ด้วยเหตุผลดังกล่าวบางคนชอบที่จะใส่ความคิดเห็นเพื่อพูดว่า "ผ่าน" เพื่อให้ชัดเจนเมื่อมีการละเว้นการใช้คำสั่ง break ในวัตถุประสงค์ ฉันทำอย่างนั้นในตัวอย่างต่อไปนี้เนื่องจากมันมีความซับซ้อนมากขึ้นและแสดงให้เห็นว่าบางกรณีสามารถรวมรหัสเพื่อเรียกใช้ก่อนที่จะล้มลงได้อย่างไร:
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;
}
นอกจากนี้คุณยังสามารถ (เป็นทางเลือก) รวมdefault
กรณีและปัญหาซึ่งจะถูกดำเนินการหากไม่มีกรณีอื่น ๆ ที่ตรงกับ - หากคุณไม่รวม a default
และไม่มีกรณีที่ตรงกันแล้วไม่มีอะไรเกิดขึ้น คุณสามารถเลือกที่จะใช้ตัวพิมพ์เล็ก (ตัวเลือก)
ดังนั้นในตัวอย่างที่สองของฉันถ้าsomeVar
เป็น 1 มันจะโทรsomeFunction()
แล้วคุณจะเห็นการแจ้งเตือนสี่รายการเนื่องจากมีหลายกรณีที่บางรายการมีการแจ้งเตือนอยู่ คือsomeVar
3, 4 หรือ 5 คุณจะเห็นการแจ้งเตือนสองรายการ ถ้าsomeVar
เป็น 7 คุณจะเห็น "อย่างอื่น" และถ้าเป็น 8 หรือค่าอื่น ๆ ที่คุณเห็น "จุดสิ้นสุด"
คุณต้องทำสองอย่าง case
ป้ายกำกับ
การควบคุมจะตกหลุมจากเลเบลแรกไปที่สองดังนั้นทั้งคู่จะรันโค้ดเดียวกัน
คุณต้องเปลี่ยนมัน!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
ลืมswitch
และช่วยให้การเล่นด้วยbreak
if
และแทนที่จะเข้าไปยุ่ง
if(pageid === "listing-page" || pageid === "home-page")
ให้สร้างอาร์เรย์หลาย ๆ ตัวพร้อมเคสและตรวจสอบด้วย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");
}
ใช้เครื่องหมายจุลภาคเพื่อแยกกรณีและปัญหา
switch (pageid)
{
case "listing-page","home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}