Làm thế nào bạn sẽ sử dụng một switch casekhi bạn cần kiểm tra a hoặc b trong cùng một trường hợp?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Làm thế nào bạn sẽ sử dụng một switch casekhi bạn cần kiểm tra a hoặc b trong cùng một trường hợp?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Câu trả lời:
Bạn có thể sử dụng thông qua:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Vì các câu trả lời khác giải thích cách thực hiện mà không thực sự giải thích lý do tại sao nó hoạt động:
Khi switchthực thi, nó tìm thấy casecâu lệnh khớp đầu tiên và sau đó thực thi từng dòng mã sau khi chuyển đổi cho đến khi nó chạm một breakcâu lệnh hoặc kết thúc switch(hoặc một returncâu lệnh rời khỏi toàn bộ hàm chứa). Khi bạn cố tình bỏ qua breakđể mã bên dưới caseđược thực thi, đó được gọi là thông qua . Vì vậy, đối với yêu cầu của OP:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Quên bao gồm các breakcâu lệnh là một lỗi mã hóa khá phổ biến và là điều đầu tiên bạn nên tìm kiếm nếu bạn switchkhông làm việc theo cách bạn mong đợi. Vì lý do đó, một số người thích đưa ra một nhận xét để nói "rơi vào" để làm cho nó rõ ràng khi các tuyên bố phá vỡ đã được bỏ qua trên mục đích. Tôi làm điều đó trong ví dụ sau vì nó phức tạp hơn một chút và chỉ ra cách một số trường hợp có thể bao gồm mã để thực thi trước khi chúng rơi vào:
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;
}
Bạn cũng có thể (tùy chọn) bao gồm một defaulttrường hợp, sẽ được thực hiện nếu không có trường hợp nào khác khớp - nếu bạn không bao gồm một defaultvà không có trường hợp nào khớp thì không có gì xảy ra. Bạn có thể (tùy chọn) rơi vào trường hợp mặc định.
Vì vậy, trong ví dụ thứ hai của tôi nếu someVarlà 1 thì nó sẽ gọi someFunction()và sau đó bạn sẽ thấy bốn cảnh báo khi nó rơi vào nhiều trường hợp một số trong đó có cảnh báo theo chúng. Là someVar3, 4 hoặc 5 bạn sẽ thấy hai cảnh báo. Nếu someVarlà 7 bạn sẽ thấy "Cái gì khác" và nếu là 8 hoặc bất kỳ giá trị nào khác bạn sẽ thấy "Kết thúc".
Bạn phải chuyển nó!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
Quên switchvà break, hãy chơi với if. Và thay vì khẳng định
if(pageid === "listing-page" || pageid === "home-page")
cho phép tạo một số mảng với các trường hợp và kiểm tra nó với 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");
}