
f-lab 멘토링 중, If문과 switch문이 어떤 차이가 있는지에 대한 질문을 받았다. 이에 대해 정확하게 답변할 수 없었다. 비슷한 상황에 사용하는 두 분기문이 어떤 점이 다른지 궁금하기도 하여 정리해보고자 한다.
if (Expression) Statement
// or
if (Expression) Statement else Statement
If문은 Expression 부분이 true면 If Statement를 실행하고 false면 else Statement를 실행한다.
switch (Expression) {
case Expression: {
// ...
}
// or
case Expression:
// ...
default:
// ...
}
Switch문은 Expression의 값에 따라 case 값과 일치하는 곳으로 분기를 한다.
If문은 equality와 logical expression을 체크하고 Switch문은 equality만 체크한다.If문은 integer, character, boolean과 같은 타입을 평가하고 Switch문은 integer와 character만 평가한다.If문의 평가식이 false라면 else 문을 실행하는 반면 Switch문은 평가식과 맞는 case가 없다면 default문을 실행한다.If문은 장황하여 수정하기 어렵고 Switch문은 상대적으로 단순하여 수정이 쉽다.If문은 런타임에 해석하여 분기하고 Switch문은 컴파일 과정에서 jump table을 만들어 분기하기에 비교적 성능상 이점이 있다.위의 내용이 인터넷 검색으로 나온 If문과 Switch문의 차이점이다. 하지만 의문점이 많이 남았다.
If문을 대체할 수 있다.const a = 0;
switch(true) {
case a === 0:
// 코드
case f(a) === 'no':
}