while 문의 진보 형태로 for 문이 있듯이, if문의 진보 형태로 switch ~ case 문이 있습니다.
switch – case 문의 사용 형태를 정리하면 아래와 같은데요.
switch(변수) { case "값1": 값1에 매칭될 때 실행할 코드; break; case "값2": 값1에 매칭될 때 실행할 코드; break; : : default: 앞에서 모든 값에 매칭이 안될 경우 실행할 코드 } |
아래 알고리즘을 통해 예제를 살펴보겠습니다.
1) 사용자에게 아래 문구를 보여주며 변수choice값를 입력 받습니다. “좋아하는 언어는? 1)Node.js, 2)C++, 3)PHP, 4)파이썬” 2) 변수choice값에 따라 아래 내용을 출력합니다. “1” : "Node.js! 훌륭한 선택!" “2” : "C++! 최고속 언어!" “3” : "쉬운 서버 언어!" “4” : "인공지능을 원하세요?" “그외” : "잘못된 번호입니다." |
위 내용을 코드로 옮기면 아래와 같습니다.
choice=prompt("좋아하는 언어는? 1)Node.js, 2)C++, 3)PHP, 4)파이썬"); switch(choice) { case "1": console.log("Node.js! 훌륭한 선택!"); break; case "2": console.log("C++! 최고속 언어!"); break; case "3": console.log("쉬운 서버 언어!"); break; case "4": console.log("인공지능을 원하세요?"); break; default: console.log("잘못된 번호입니다."); } |
첫번째 줄의 prompt() 는 node.js 명령어가 아닙니다. 웹 브라우저용 명령어인데요.
choice=prompt("좋아하는 언어는? 1)Node.js, 2)C++, 3)PHP, 4)파이썬"); |
위 코드가 실행되면 아래와 같은 선택상자가 표시되고, 내용을 입력 받습니다.
입력란에 내용 입력 후, 확인 버튼을 클릭하면, 입력내용이 choice 변수에 대입됩니다.
이어서 switch 괄호안에 입력된 변수의 값에 따라
switch(choice) |
해당하는 case 값을 찾아가서 그 아래부터 코드를 실행합니다.
case "1": // 매칭성공! console.log("Node.js! 훌륭한 선택!"); // 여기부터 코드 실행 |
실행범위는 break;문을 만날 때 까지인데요, break; 문을 만나면 나머지 case 문을 모두 건너뛰고 중괄호 밖으로 빠져나갑니다.
case "1": console.log("Node.js! 훌륭한 선택!"); break; // break를 만나면, : : } // 밖으로 빠져나갑니다. |
만약 매칭되는 값이 없을 경우, default 로 이동합니다. 그리고 아래 코드를 실행하지요.
: : default: console.log("잘못된 번호입니다."); } |
switch – case 문에는 한가지 주의할 점이 있습니다.
그것은 바로 break;를 빠뜨리지 않는 것인데요. 숙련된 개발자도 가끔 실수하는 부분입니다.
아래 코드는 break를 누락했습니다. 어떻게 실행될까요?
switch(choice) { case "1": console.log("Node.js! 훌륭한 선택!"); case "2": console.log("C++! 최고속 언어!"); case "3": console.log("쉬운 서버 언어!"); case "4": console.log("인공지능을 원하세요?"); default: console.log("잘못된 번호입니다."); } |
변수 choice 값에 매칭 부분으로 이동은 하지만, break; 가 없어 아래 부분이 모두 실행됩니다.
이를 테면 choice 값이 “3”이라면 case “3”으로 이동한 다음 break를 만날 때 까지 실행합니다.
이 경우 다른 case 와 default는 무시됩니다. ( 밑줄 친 부분 모두 실행 )
switch(choice) { : case "3": console.log("쉬운 서버 언어!"); case "4": console.log("인공지능을 원하세요?"); default: console.log("잘못된 번호입니다."); } |
결과 쉬운 서버 언어! 인공지능을 원하세요? 잘못된 번호입니다. |
도리어 이 기능을 역이용한 코딩방법도 많이 사용되고 있습니다. 아래는 샘플 코드입니다.
choice=prompt("먹고 싶은 음료는? 1)아메리카노, 2)카페라뗴, 3)카푸치노, 4)카라멜 마키아토"); switch(choice) { case "1": console.log("1,500원입니다."); break; case "2": case "3": case "4": console.log("2,500원입니다."); break; default: console.log("잘못된 번호입니다."); } |
필요하신 분에게 도움이 되시길 바랍니다. 그러면 이만 :)
도움이 되셨다면 공감 한방, 댓글은 굿잡!
감사합니다~
다음게시글 : https://itadventure.tistory.com/489