[javascript] if문 switch문 차이 , 대체여부

728x90

if문과 switch문은 뭐가 다를까?

 if문으로 switch문을 대체할 수 있다.

(나는 아직... if문이 더 쉬운 것 같다.)

let myChoice = 2;

switch(myChoice) {
  case 1:
    console.log('토끼를 선택한 당신, ...');
    break;
  case 2:
    console.log('고양이를 선택한 당신, ...');
    break;
  case 3:
    console.log('코알라를 선택한 당신, ...');
    break;
  case 4:
    console.log('강아지를 선택한 당신, ...');
    break;
  default:
    console.log('1에서 4사이의 숫자를 선택해 주세요.'); 
}

if (myChoice === 1) {
  console.log('토끼를 선택한 당신, ...');
} else if (myChoice === 2) {
  console.log('고양이를 선택한 당신, ...');
} else if (myChoice === 3) {
  console.log('코알라를 선택한 당신, ...');
} else if (myChoice === 4) {
  console.log('강아지를 선택한 당신, ...');
} else {
  console.log('1에서 4사이의 숫자를 선택해 주세요.');
}

switch문을 if문으로 작성할 때 주의할 점은 '===' 등호를 세 개 써야한다. 

switch문은 암시적 형변환을 허용하지 않기 때문이다.

javascript에서 '==='와 '=='는 어떻게 다른가😉
1) == : 연산자를 이용하여 서로 다른 유형의 두 변수 비교(유형변환 비교)
2) === : 두 변수의 값&자료형 비교 (엄격한비교)

만약 위 코드에서  myChoice = '2';

라고 문자형으로 선언하면 예상가능하듯이 

defalut문 : 1에서 4사이의 숫자를 선택해주세요.

else문: 1에서 4사이의 숫자를 선택해주세요.

가 나온다.

 

여기서 추가로, if문의 등호를 '==' 이렇게 바꾸면

defalut문 : 1에서 4사이의 숫자를 선택해주세요.

myChoice = '2' ==2: 고양이를 선택한 당신...

이렇게 나온다.

 

그렇기 때문에 switch문은 값들을 비교할 때 자료형을 엄격하게 구분한다는 점과

switch문을 if문으로 대체할 때는 반드시 '==='를 사용해서 엄격한 비교가 이루어지게 해야한다

728x90