본문 바로가기
JavaScript

[JavaScript/자바스크립트]조건문 if...else, switch

by hans-j 2022. 12. 24.

조건문은 주어진 조건식의 평가 결과에 따라 블록의 실행을 결정한다.


if..else 조건식은 불리언 값으로 평가될 수 있는 표현식이다.

if ...else 문

if (조건식){
    //조건식이 참이면 이 코드 블록이 실행된다.      
} else {
    //조건식이 거짓이면 이 코드 블록이 실행된다.
}
if (조건식){
    //조건식이 참이면 이 코드 블록이 실행된다.      
} else if (조건식2) {
    //조건식이 거짓이면 이 코드 블록이 실행된다.
} else {
    //조건식 1과 조건식2가 모두 거짓이면 이 코드 블록이 실행된다.
}

응용

let num = 3 ;
let kind;

if (num > 0){
    kind = '양수';
} else {
    kind = '음수';
}
console.log(kind);
let num = 3 ;

if (num > 0){
    console.log('양수');;
} else {
   console.log('음수');;
}
let num = 0 ;

if (num > 0){
    console.log('양수');
} else if (num < 0) {
   console.log('음수');
} else {
    console.log('영');
}

만약 코드 블록내의 문이 하나뿐이라면 중괄호를 생략할 수 있다.

또한 if ...else문을 삼항 조건 연산자로 바꿔 쓸 수도 있다.

//x가 짝수이면 result 변수에 문자열 '짝수'를 할당하고, 홀수이면 문자열 '홀수'를 할당한다.

let x = 2;
let result;

if (x % 2){ //2 나누기 2의 나머지는 0. 0은 false로 암묵적 강제 변환된다. 
    result = '홀수';
} else {
    result = '짝수';
}

console.log(result);

let x = 2;

let result = x % 2 ? '홀수' : '짝수';
console.log(result);

switch

switch 문은 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮긴다.

swtich문의 표현식과 일치하는 case문이 없으면 실행 순서는 default문으로 이동한다.

(default문은 선택사항!)

 if...else문의 조건식은 불리언 값으로 평가되어야 하지만, swtich문의 표현식은 문자열이나 숫자 값인 경우가 많다.

따라서 참, 거짓 보다는 다양한 상황(case)에 따라 실행할 코드 블록을 결정할 때 사용한다.

switch(표현식){
    case 표현식1 :
        switch 문의 표현식과 표현식 1이 일치하면 실행될 문;
        break;
    case 표현식2 :
        switch 문의 표현식과 표현식 1이 일치하면 실행될 문;
        break;
    default :
        switch 문의 표현식과 일치하는 case문이 없을 때 실행될 문;
}

이때 중요한 것은 break 문을 사용해야하는 것!!!!

사용하지 않으면 switch문이 끝날 때 까지 이후의 모든 case문과 default문을 실행하기 때문에 폴스루(fall through)가

발생하여 오류가 발생한다.

응용 // 윤년 계산 

let year =  2000;
let month = 2;
var days = 0;

switch(month){
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
        days = 31;
        break; 
    case 4: case 6: case 9: case 11:
        days = 30;
        break;
    case 2:
        days = ((year % 4 === 0 && year % 100 !== 0) || ( year % 400 === 000)) ? 29 : 28;
        break;
        default:
            console.log('Invalid month');   
    } 
console.log(days);

조건이 너무 많은 경우를 제외하고 swtich문보다 if...else문을 사용하는 편이 좋다.


**모던 자바스크립트 deep dive (이응모 선생님) 를 읽고 참고하여 작성하는 글입니다 **