본문 바로가기
IT 개발

[JavaScript] 조건문 switch 언제 사용하는지 + 개념정리

by takoapps 2021. 7. 1.

조건문에서 if를 사용할 때, else if를 여러 번 반복하는 코드를 작성해야 하는 상황 또는 정해진 데이터를 처리하는 경우에도 switch문을 사용하는 것이 효율적이며 가독성 측면에서도 좋다.

switch문은 각 case에 맞는 값을 찾아 해당 case 문의 코드를 실행시킨다.

조건문 switch를 사용해보자!

 

 

여기서 a 변수에는 3이라는 값이 할당되어 있다.
switch문을 이용하여 a변수값과 같은 값을 갖고 있는 case를 찾은 후, case문의 코드를 출력한다.

위의 예시는 조건이 3개밖에 없어서 if 조건문을 사용해도 좋지만
만약 조건이 점점 추가되는 상황이 생길 수 있거나, 그 이상의 조건들이 있다면 switch를 사용해 주는 게 좋다.

그리고 각 console.log 밑에 brack; 는 case가 조건에 부합하면 조건문을 멈추게 해주는 역할을 한다.

 

만약 case 3: 에 break;가 없었다면 이는 조건이 부합했는지 아닌지에 상관없이

그다음 조건도 실행시켜서 '정답'과 '보다 작음' 둘 다 출력이 된다.

case 5: 는 조건문의 마지막이라 brack;를 넣어주지 않아도 상관없지만 추후에 추가될지도 모른다는 전제하에

미리 넣어주는 것도 좋은 방법일 수 있다.

반복되는 코드는 묶어서 사용하기

 

 

위와 같이 동일한 코드를 출력하는 상황에선 (case 5,6)
case 값:
case 값:
출력값

의 구조로 두 케이스를 묶어서 한 번에 출력이 가능하다.

모든 형태의 표현식을 인수로!

 

switch문과 case문은 모든 형태의 표현식을 인수로 받는다
밑의 두 코드를 보면 거의 같지만 다른 결괏값을 가져온다.'

 

 

이 결괏값은 'no'가 출력이 된다.
왜냐, c의 값은 현재 '1'으로 문자열인데 switch(c)는 말 그대로 '1'이라는 숫자가 대입되어 있다.

(위의 let에서 숫자 1로 대입함) 그래서 case의 d + 1은 0+1, 즉 1이라는 숫자 값이 결과로 나오지만 c의 결괏값은 문자'1'이라 답이 아니다.

 

 

위의 코드는 switch(+c)라 이 경우 문자에 숫자를 붙여줘서 '1'에서 1로 변하게 된다. (콘솔 창에 직접 +'1'을 출력해보면 문자에서 숫자 1로 바뀌는 걸 확인 가능하다)
이렇게 문자열에 연산자를 붙여주면 숫자로 변하기 때문에, c라는 '1'에 +라는 연산자가 붙어있어서

c는 숫자 1의 값으로 바뀌게 된다.

참고로 문자열에 담긴 숫자 앞에 연산자를 붙여주면 숫자로 변하지만,
이를 계산을 할 경우 ex. 3+'4' 또는 '3'+'4'
저 두 경우 모두 34가 나와버린다. ( 플러스 연산자에만 해당하고 나머지는 숫자로 변환된다 )

뭔가 이상하지만 그냥 그렇구나 하고 받아들이는 게 낫겠다.

 

반응형