[Javascript]조건문(if,switch)

이대희·2021년 1월 24일
0
post-thumbnail

제어구문

조건문 - 조건에 따라 처리를 분기
반복문 - 조건을 만족하면 처리를 반복 실행
점프문 - 프로그램을 다른 위치로 이동

조건문(if)

if(조건식1){문장1}
else if(조건식2){문장2}
else{문장3}

조건식1을 만족하면 문장1을 실행하고 조건식1을 만족하지 못하고 조건식2를 만족하면 문장2를 실행하고 조건식1,2 둘다 만족하지 못할 경우 문장3을 실행한다.

let age = prompt('나이를 입력해주세요.','');
if (age > 19) {
  alert('성인입니다');
} else {
  alert('성인이 아닙니다');
}

위와 같이 작성하는 것보다 더 짧고 간결하게 작성할 수 있다.

let age = prompt('나이를 입력해주세요.','');
age > 19 ? alert('성인입니다'): alert('성인이 아닙니다');

age가 19를 넘어 조건이 맞으면 :앞에 성인입니다를 출력하고 조건이 맞지 않으면 :뒤 성인이아닙니다를 출력한다.

◾️ 다중 '?'

let age = prompt('나이를 입력해주세요.', '');

let message = (age < 3) ? '유아입니다' :
  (age < 18) ? '성인이 아닙니다' :
  (age < 100) ? '성인입니다' :
  '나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!';

alert( message );

물음표 연산자?가 여러개 연결하면 복수 조건을 처리할수있다.

if (age < 3) {
  message = '유아입니다';
} else if (age < 18) {
  message = '성인이 아닙니다';
} else if (age < 100) {
  message = '성인입니다';
} else {
  message = '나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!';
}

두번째 나이를 입력받는 것처럼 message에 값을 입력받을 때는 ?를 사용하여 받는 것이 간결하고 가독성이 좋지만 첫번째처럼 출력이 많거나 복잡할 때는 if 를 사용하는게 더 읽기 쉽다. ?를 쓰게되면 옆으로 길게 코드가 늘어나 읽기 힘들어지는 이유다

조건문(switch)

if문을 사용하여 분기점을 많이 만들면 가독성도 떨어지고 코드가 복잡해진다. 반면 switch 문을 사용하면 더 간결하게 표현할 수 있다.

switch(변수) {
case 표현식1: 실행문1
...
[break]
case 표현식2: 실행문2
...
[break]
default:
...
[break]
}

()안에 변수 또는 표현식이 case와 일치하면 그 case에 있는 실행문이 실행되고 break를 만나 다음 case로 넘어가지 않는다.

예시

let a = 2 + 2;

switch (a) {
  case 3:
    alert( 'a는 3입니다.' );
    break;
  case 4:
    alert( 'a는 4입니다.' );
    break;
  case 5:
    alert( 'a는 5입니다.' );
    break;
  default:
    alert( "어떤 값인지 파악이 되지 않습니다." );
}

변수에 입력된 4가 case에 있는 a와 비교하여 일치하는 case를 만났을 때 실행문이 실행된다.
조건과 일치하는 case표현식을 만나지 않았을 경우 default를 출력하게 된다.

case문 안에 break문이 없으면 조건에 부합하는지 여부를 따지지 않고 뒤에 이어지는 case문을 실행한다.

여러개 case문 묶기

let a = 2 + 2;

switch (a) {
  case 3:
    alert( 'a는 3입니다.' );
    break;
  case 4:
  case 5:
    alert( 'a는 4 또는 5입니다.' );
    break;
  default:
    alert( "어떤 값인지 파악이 되지 않습니다." );
}

case4 case5를 묶어서 같이 쓰게되면 a4또는5일때 alert( 'a는 4 또는 5입니다.' );가 출력된다

0개의 댓글