TIL 5. switch문

isk·2022년 11월 6일
0

TIL

목록 보기
5/122
post-custom-banner

오늘은 프로젝트가 끝나고 발표회가 있었다.
총 20팀이 발표를 했는데, 이게 입문자를 위한 내일배움단 강의를 듣고 온 사람들이 맞는 건가 싶었다.
퀄리티 높은 페이지가 수두룩 했고, 다들 정말 아이디어가 뛰어나셨다.
물론 우리팀은 우리팀의 실력 나름대로 아주 잘했다고 생각한다.
방금도 다른 팀의 팀원분이 오셔서 왜 이렇게 잘 하셨냐고 칭찬도 해주시고 가셨다.


오늘은 switch에 대해 알아보려고 한다.
예전에 독학할 때 잠깐 보고 스쳐지나간 적이 있지만
발표회 때 튜터님이 팀 리뷰를 해주실 때, switch를 언급하고 넘어가셨기 때문에 다시 한 번 보자라는 마인드로 포스팅하려고 한다.

기본적으로 switch는 if문과 비슷하면서도 다르다.
조건에 맞으면 정해진 리턴을 뱉는다.
if문은 조건식이 무조건 boolean으로 평가되는데,
switch는 문자열, 숫자인 경우가 많다.
조건식이 많을 때 if문 보다 switch를 더 많이 사용한다고 한다.

아래는 기본 문법이다.

switch (대상) {
  case 조건값:
    리턴
    [break;]
  case 조건값:
  	리턴
    [break;]
  ...
  case 조건값:
    리턴
    [break;]
  [default:
    리턴
    [break;]]
}

대상과 조건값이 같다면, 리턴을 실행 or 반환한다.

switch (expression) {
  case value1:
    Statements1
    [break;]
  case value2:
  	Statements2
    [break;]
  ...
  case valueN:
    Statements3
    [break;]
  [default:
    Statements4
    [break;]]
}

expression의 값이 value1이면 Statements1을, value2면 Statements2를 실행하고, 아무것도 아니라면 마지막 default를 실행한다.
조건이 맞게 되면 break를 만나며, 그 이후는 비교하지도 않고 switch문을 종료시킨다.
default문은 switch문 가장 마지막에 위치하므로 default문의 실행이 종료되면 switch문도 종료되기에 break를 생략하는 것이 일반적이라고 한다.

  • expression
    각각의 case 절에 맞추어볼 결과에 대한 expression

  • case valueN (옵션)
    어떤 case 절은 expression와 맞추어보는데 사용된다. 만약 expression 이 특정 valueN과 일치 된다면, switch statement 문이 끝나거나 break가 오떄까지 case 절 내부가 실행된다.

  • default (옵션)
    default 절; 만약 있다면, 어떤 case의 절도 expression 값과 일치되지 않는다면, default 절이 실행된다.

function testSwitch1(alpha) {
  var answer = "";
  switch (alpha){
    case 1: 
      answer = "a";
      break; 
    case 2:
      answer = "b";
      break;
    case 3:
      answer = "c"; 
      break;
    case 4:
      answer = "d"; 
      break; 
  }
  return answer;
}

testSwitch1(1);        //"a"

default가 없는 경우는 이런 모습.

unction testSwitch2(alpha) {
  var answer = "";
  switch (alpha){
    case "a":
      answer = "ajax";
      break;
    case "b":
      answer ="button";
      break;
    case "c":
      answer ="css";
      break;
    default:
      answer ="js"; 
      break;
  }
  return answer;
}

switchOfStuff("d")     //"js"  
switchOfStuff("c")     //"css"

default가 있다면 이런 모습

function testSwitch(a) {
  var answer = "";
  switch (a){
    case 1:
    case 2:
    case 3: 
      answer = "kkk"; 
      break;
    case 4:
    case 5:
    case 6: 
      answer = "iii";
      break;
    case 7:
    case 8: 
    case 9:
      answer = "mmm"; 
      break;
  }
  return answer;
}

testSwitch1(2);      //kkk
testSwitch1(5);      //iii
testSwitch1(9);      //mmm

조건 여러개가 같은 값을 공유하는 경우에는 이런 모습

if (data.weather[0].main == "Clear") {
  a = "맑음";
}
if (data.weather[0].main == "Cloud") {
  a = "구름";
}
if (data.weather[0].main == "Rain") {
  a = "비";
}

위의 if문은 아래의 switch문으로 바꿔서 사용할 수 있다

switch(data.weather[0].main){
	case "Clear":
    	a = "맑음!"
		break;
    case "Cloud":
    	a = "구름!"
		break;
    case "Rain":
    	a = "비!"
		break;
}

하지만 case 뒤에는 변수, 조건식 등을 사용할 수 없다.


일주일 간의 프로젝트가 끝났다. 일로 따지자면 5일!
짧지만 긴 시간이었고 길었지만 짧은 시간이었다. 12시간이 부족할 거라고 상상도 못했는데..
다음 주부터는 본격적인 js에 들어간다고 하니 더 재밌어 질 것 같다.

post-custom-banner

0개의 댓글