JS if, switch 문 사용 시 주의할 점

정현승·2024년 10월 22일

if 문과 switch 문을 사용할 때는 올바르게 작성하여 코드의 가독성과 성능을 유지하고, 예상치 못한 오류를 방지하는 것이 중요합니다.

if 문 사용 시 주의할 점

1. 조건문의 순서

if 문에서 조건을 평가할 때, 가장 가능성이 높은 조건을 앞에 배치하는 것이 좋습니다.
이는 코드의 성능을 향상시키고, 불필요한 조건 평가를 줄일 수 있습니다.

if (score >= 90) {
    // A 등급 처리
} else if (score >= 80) {
    // B 등급 처리
} else if (score >= 70) {
    // C 등급 처리
} else {
    // 그 외 등급 처리
}

위에서 else if 조건을 잘못된 순서로 작성하면 모든 조건을 다 평가해야 하므로, 효율이 떨어집니다.
항상 상위 조건을 먼저 평가하는 것이 좋습니다.

2. 복잡한 조건의 사용

if 문에서 여러 조건을 사용하는 경우, 논리 연산자를 적절하게 사용해야 합니다.
복잡한 조건식을 사용할 때는 괄호를 통해 우선순위를 명확히 하는 것이 좋습니다.

if ((age > 18 && age < 65) || (member === true)) {
    // 조건이 복잡할 때 괄호를 사용해 우선순위 명확히
}

3. 중첩된 if 문

if 문이 중첩되면 코드의 가독성이 떨어집니다.
가능하다면 중첩된 조건을 피하고, 논리 연산자를 사용하거나 함수로 분리하는 것이 좋습니다.

//안 좋은 예시
if (condition1) {
    if (condition2) {
        if (condition3) {
            // 실행될 코드
        }
    }
}

//개선된 예시
if (condition1 && condition2 && condition3) {
    // 실행될 코드
}

4. 조건의 값이 명확한지 확인

if 문에서 조건을 평가할 때, 값이 명확하게 정의되어 있는지 확인해야 합니다.
null, undefined, 또는 false와 같은 값을 적절히 처리하지 않으면 예상치 못한 동작이 발생할 수 있습니다.

let result = null;
if (result) {
    // result가 null이므로 실행되지 않음
}

위 예시에서 result는 null이기 때문에 조건이 false로 평가되어 실행되지 않습니다. 값을 명확하게 비교하려면 다음과 같이 작성해야 합니다.

if (result === null) {
    // result가 null일 때 실행됨
}

switch 문 사용 시 주의할 점

1. break 문 사용

switch 문에서는 각 case가 끝난 후 break 문을 적절히 사용해야 합니다.
break가 없으면 fall-through 현상이 발생하여 다음 case로 계속 실행됩니다.

switch (fruit) {
    case 'apple':
        console.log("사과");
        break;
    case 'banana':
        console.log("바나나");
        break;
    default:
        console.log("알 수 없는 과일");
}

2. default 블록의 사용

switch 문에서는 default 블록을 사용하여 예외 처리를 해야 합니다.
모든 case에 해당하지 않는 값이 들어왔을 때 처리할 수 있도록 default를 포함하는 것이 좋습니다.

switch (day) {
    case 'Monday':
        console.log("월요일");
        break;
    case 'Tuesday':
        console.log("화요일");
        break;
    default:
        console.log("알 수 없는 요일");
}

3. 값의 유형 일치

switch 문에서 비교하는 값의 유형이 일치하는지 확인해야 합니다.
JavaScript에서 switch는 엄격한 동등성 비교(===)를 사용하기 때문에, 값의 데이터 유형이 다르면 일치하지 않습니다.

let number = '2';  // 문자열
switch (number) {
    case 2:  // 숫자 2
        console.log("숫자 2");
        break;
    default:
        console.log("일치하는 값 없음");
}

위 코드는 number가 '2'(문자열)이므로, 숫자 2와 일치하지 않아 "일치하는 값 없음"이 출력됩니다.

4. switch 문에서 조건이 복잡할 때

switch 문은 단일 표현식을 기반으로 값을 비교하는데, 복잡한 논리적 조건이 필요할 때는 if 문이 더 적합합니다. 예를 들어, 범위 비교 또는 논리 연산자가 필요할 때는 switch 문 대신 if 문을 사용해야 합니다.

// 복잡한 조건의 경우 if 문 사용
if (score >= 90) {
    console.log("A");
} else if (score >= 80) {
    console.log("B");
}

0개의 댓글