[javascript] JavaScript에서 break 문을 사용하는 것보다 switch 문을 반환하는 것이 더 나은 방법으로 간주됩니까?

옵션 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를 혼합하여 일치시키지 않는 것이 가장 좋습니다. 수행원.


답변