[javascript] OR (||)과 같은 스위치에서 여러 사례를 테스트
같은 경우 switch
case
에 a 또는 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
사례를 포함하지 않고 사례가 일치하지 않으면 아무 일도 일어나지 않습니다. 선택적으로 기본 사례로 넘어갈 수 있습니다.
따라서 두 번째 예에서 someVar
1 이면 1이 호출 someFunction()
되고 여러 경우에 해당하는 일부 경고가 표시되는 4 개의 경고가 표시됩니다. Is 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;
}