옵션 1-리턴을 사용하여 전환 :
function myFunction(opt)
{
switch (opt)
{
case 1: return "One";
case 2: return "Two";
case 3: return "Three";
default: return "";
}
}
옵션 2-중단을 사용하여 전환 :
function myFunction(opt)
{
var retVal = "";
switch (opt)
{
case 1:
retVal = "One";
break;
case 2:
retVal = "Two";
break;
case 3:
retVal = "Three";
break;
}
return retVal;
}
나는 두 가지가 모두 작동한다는 것을 알고 있지만 가장 좋은 방법 중 하나입니까? 나는 옵션 1을 선호하는 경향이 있습니다-더 깨끗하고 간단하기 때문에 return return을 사용하십시오.
다음은 @ ic3b3rg의 의견에 언급 된 기술을 사용하는 특정 예제의 jsFiddle입니다 .
var SFAIC = {};
SFAIC.common =
{
masterPages:
{
cs: "CS_",
cp: "CP_"
},
contentPages:
{
cs: "CSContent_",
cp: "CPContent_"
}
};
function getElementPrefix(page)
{
return (page in SFAIC.common.masterPages)
? SFAIC.common.masterPages[page]
: (page in SFAIC.common.contentPages)
? SFAIC.common.contentPages[page]
: undefined;
}
함수를 호출하려면 다음과 같은 방법으로 수행하십시오.
getElementPrefix(SFAIC.common.masterPages.cs);
getElementPrefix(SFAIC.common.masterPages.cp);
getElementPrefix(SFAIC.common.contentPages.cs);
getElementPrefix(SFAIC.common.contentPages.cp);
여기서 문제는 항상 정의되지 않은 값을 반환한다는 것입니다. 속성이 아닌 객체 리터럴의 실제 값을 전달하기 때문이라고 생각합니다. @ ic3b3rg의 의견에 설명 된 기술을 사용 하여이 문제를 해결하려면 어떻게해야 합니까?
답변
중단하면 함수에서 계속 처리 할 수 있습니다. 그것이 기능에서하고 싶은 모든 것이라면 스위치에서 나가는 것이 좋습니다.
답변
그것은 당신의 함수가 switch 문으로 만 구성되어 있다면 그것이 좋다고 생각합니다. 그러나 해당 기능 내에서 다른 작업을 수행하려는 경우 좋은 생각이 아닙니다. 또한 현재와 미래의 요구 사항을 고려해야 할 수도 있습니다. 기능을 옵션 1에서 옵션 2로 변경하려면 더 많은 리팩토링이 필요합니다.
그러나 if / else 문 내에서 다음을 수행하는 것이 가장 좋습니다.
var foo = "bar";
if(foo == "bar") {
return 0;
}
else {
return 100;
}
이를 바탕으로 옵션 1을 사용하는 것이 더 좋습니다.
요컨대, 코드가 일관되고 읽기 쉽고 유지 관리 가능한 표준을 준수하는 한, 즉 응용 프로그램 전체에서 옵션 1과 2를 혼합하여 일치시키지 않는 것이 가장 좋습니다. 수행원.