📢 어렵고 정석적인 개념 설명보다는 저같은 초보자도 이해하기 쉽게 정리하는 것을 원칙으로 포스팅하고 있습니다. 😄

[JavaScript] 중첩 if문을 깔끔하고 효율적으로 사용하는 방법

문제

여러 조건이 들어가 있는 함수를 만든다고 가정해보자. 단순히 if문을 이용하면 쉽게 구현될 함수이다.

우리가 알고 있는 if문은 if (조건) {수행} else {수행} ... 이런 식으로 참인 조건을 기준으로 진행된다.

하지만, 이런 방법은 중첩 if문을 만들어서 if문 안에 if문, 또 그 안에 if문... 식으로 더 복잡해질 수 있다.

 

이를 해결하기 위해서는, 참이 아닌 부정 조건을 기준으로 if문을 진행하면 된다.

즉, if (!조건) {return ...} 이런 식으로 return을 이용해서 먼저 예외 사항들을 걸러주는 방식인 것이다.

설명으로는 어려울 수도 있으니 직접 코드로 확인해보자!

 

방법

function exam(subject, state, num) {
    if (subject === '국어'){
        if (state === '상'){
            if (num >= 90){
                console.log("참 잘했어요!");
            } else {
                console.log("노력하세요.");
            }
        } else {
            console.log("노력하세요.");
        }
    } else {
        console.log("노력하세요.");
    }
}

exam('국어', '상', 92); // "참 잘했어요!"

'국어' 과목에서 '상' 등급의 90점 이상의 경우 "참 잘했어요!"라는 메시지를 콘솔에 출력하는 함수를 만들어봤다.

여러 조건들이 얽힌 경우 단순히 if문만을 이용하여 구현이 되면, 위처럼 중첩 if문이 만들어져서 보기 불편해지는 경우가 생길 수 있다. 그럴 땐, 일반적인 if문의 "~이면 ~해라"가 아닌 "~가 아닐 땐 ~를 제외해라"로 만들어보자.

 

function exam(subject, state, num) {
    if (subject !== '국어') return console.log("노력하세요.");
    if (state !== '상') return console.log("노력하세요.");
    if (num < 90) return console.log("노력하세요");
    return console.log("참 잘했어요!");
}

else를 위로 올려 부정을 기준으로 if문을 작성하면 위처럼 매우 깔끔하게 if문을 사용할 수 있다.

주의할 점은 예외의 경우를 함수를 바로 종료시키기 위해서 return을 잊지 말고 써줘야 한다.

그리고 예외에 모두 해당되지 않는 경우, 결과적으로 도출할 값을 마지막 함수의 return 값으로 전달해주면 끝이다.

 

// a가 참인 경우에 메시지를 출력하라!
function test(a){
    if (a){
        console.log('Correct!');
    }
}

// a가 거짓인 경우에는 함수를 종료시키고, 해당하지 않은 경우(a가 참인 경우)에는 메시지를 출력하라!
function test2(a){
    if (!a) return;
    return console.log('Correct!')
}

구조를 단순화하자면 위와 같다. 우리가 일반적으로 쓰는 첫 번째 test 함수는 a가 참이면 'Correct!'를 출력하는 것이고, 두 번째 test2 함수는 a가 거짓일 때 return으로 함수를 종료시키고 그 외의 경우엔 'Correct!'를 출력하는 것이다.

두 가지 함수의 의미는 같다. 하지만, 구조가 다르다. 첫 번째는 참을 기준으로 '~인 경우에는 ~를 해라'이고 두 번째는 예외(거짓)를 기준으로 '~가 아닌 경우에는 함수를 종료시키고, 참인 경우에만 ~를 해라'이다.

 

단순 if문을 사용하는 경우에는 첫 번째가 사용하기도 쉽고 보기도 편하다. 하지만, if문이 많아지고 if문 안에 if문이 들어오는 중첩 if문이 있는 경우에는 두 번째 방식인 예외(else)를 먼저 거르는 방법을 사용해보자!

 

1. 중첩 if문을 사용할 땐, 예외를 먼저 거른 다음 나머지 값을 return 하도록 하면 깔끔하게 사용할 수 있다.