WEB🛫/JavaScript

[JavaScript] 모던 자바스크립트 Deep Dive / 제어문

hyunsix 2021. 8. 24. 01:52

1. if ... else 문 vs 삼항 조건 연산자

위와 같은 if ... else문을

요렇게 삼항조건연산자를 통해 간편하게 만들 수 있다!

 

하지만 조금 다른점! 위의 if ... else문과 다르게 삼항연산자는 result라는 변수에다가 할당을 한다. 여기서 두 조건문의 차이점이 나온다. "var % 2 ? '홀수' : '짝수' "는 표현식이다. 즉, 삼항 조건 연산자는 값으로 평가되는 표현식을 만든다. 따라서 삼항 조건 연산자 표현식은 값처럼 사용할 수 있기 때문에 변수에 할당할 수 있다. 하지만 if... else 문은 말 그대로 이다. 따라서 값처럼 사용할 수 없기 때문에 변수에 할당할 수 없다.

 

조건에 따라 단순히 값을 결정하여 변수에 할당하는 경우 : 삼항 조건 연산자!

조건에 따라 실행해야 할 내용이 복잡하여 여러 줄의 문이 필요하다면 : if ... else문

을 사용하는 것이 가독성에 좋다.

 

 

2. switch문 폴스루

switch문은 문자열이나 숫자의 분기를 통해 실행할 코드 블록을 결정해야 할 때 주로 사용한다. 

하지만 위와 같은 예제를 실행해보면 '10월'이 출력되지 않고 '초기값'이 출력된다. 이는 switch 문이 case 문을 통해 실행 흐름이 이동하여 문을 실행하는 것은 맞지만 문을 실행한 후에 switch를 바로 탈출하지 않고 switch문이 끝날 때까지 이후의 모든 case 문과 default 문을 실행했기 때문에 발생한다. 즉 case10에서 monthName='10월'이 할당된 후에 11, 12, default까지 재할당되며 마지막엔 '초기값'이 재할당 된 것이다. 이러한 현상을 폴스루(fall through)라고 한다. 

따라서 올바른 switch문은 case마다 break를 걸어주는 아래와 같다.