오늘은 프로젝트가 끝나고 발표회가 있었다.
총 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에 들어간다고 하니 더 재밌어 질 것 같다.