Làm thế nào bạn sẽ sử dụng một switch
case
khi 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
case
khi 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 switch
thực thi, nó tìm thấy case
câ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 break
câu lệnh hoặc kết thúc switch
(hoặc một return
câ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 break
câ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 switch
khô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 default
trườ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 default
và 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 someVar
là 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à someVar
3, 4 hoặc 5 bạn sẽ thấy hai cảnh báo. Nếu someVar
là 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 switch
và 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");
}