[javascript] OR (||)과 같은 스위치에서 여러 사례를 테스트

같은 경우 switch casea 또는 b 를 테스트해야 할 때 a를 어떻게 사용 하시겠습니까?

switch (pageid) {
  case "listing-page" || "home-page":
    alert("hello");
    break;
  case "details-page":
    alert("goodbye");
    break;
}



답변

폴 스루를 사용할 수 있습니다.

switch (pageid)
{
    case "listing-page":
    case "home-page":
        alert("hello");
        break;
    case "details-page":
        alert("goodbye");
        break;
}


답변

다른 답변은 실제로 작동하는 이유를 설명하지 않고 수행하는 방법을 설명했기 때문에 :

switch실행되며, 제 매칭 발견 case문 후는 어느 돌 때까지 전환 후 각 코드 라인을 실행 break문 또는 끝 switch(또는 return전체를 포함하는 기능을 떠나 문). 의도적으로 생략하면 break다음 코드 case가 실행되어 폴 스루 (fall-through) 라고합니다 . OP의 요구 사항은 다음과 같습니다.

switch (pageid) {
   case "listing-page":
   case "home-page":
      alert("hello");
      break;

   case "details-page":
      alert("goodbye");
      break;
} 

break명령문 을 포함하는 것을 잊는 것은 상당히 일반적인 코딩 실수이며 switch예상 한 방식으로 작동하지 않는 경우 가장 먼저 찾아야합니다 . 이러한 이유로 일부 사람들은 의도적으로 중단 설명을 생략했을 때 명확하게하기 위해 “통과”라고 언급하기를 좋아합니다. 다음 예제에서는 좀 더 복잡하기 때문에 일부 사례는 코드가 넘어지기 전에 실행할 코드를 포함하는 방법을 보여줍니다.

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사례를 포함 할 수도 있습니다 (선택 사항) . 다른 사례가 일치하지 않으면 실행됩니다. default사례를 포함하지 않고 사례가 일치하지 않으면 아무 일도 일어나지 않습니다. 선택적으로 기본 사례로 넘어갈 수 있습니다.

따라서 두 번째 예에서 someVar1 이면 1이 호출 someFunction()되고 여러 경우에 해당하는 일부 경고가 표시되는 4 개의 경고가 표시됩니다. Is someVar는 3, 4 또는 5이며 두 개의 경고가 표시됩니다. someVar7 이면 “다른 것”이 표시되고 8 또는 다른 값이면 “끝”이 표시됩니다.


답변

두 개의 case레이블 을 만들어야 합니다.

제어는 첫 번째 레이블에서 두 번째 레이블로 넘어가므로 둘 다 동일한 코드를 실행합니다.


답변

당신은 그것을 전환해야합니다!

switch (true) {
    case ( (pageid === "listing-page") || (pageid === ("home-page") ):
        alert("hello");
        break;
    case (pageid === "details-page"):
        alert("goodbye");
        break;
}


답변

잊고 switchbreak함께 놀자 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;
}


답변