[JavaScript] 조건문

thingzoo·2023년 4월 25일
0

JavaScript

목록 보기
3/7
post-thumbnail

1. if문

if(...)문은 괄호 안에 들어가는 조건을 평가하는데, 그 결과가 true이면 코드 블록이 실행됨

if (year == 2015) {
  alert( "정답입니다!" );
  alert( "아주 똑똑하시네요!" );
}

불린형으로 변환

if (…) 문은 괄호 안의 표현식을 평가하고 그 결과를 불린값으로 변환함

  • 숫자 0, 빈 문자열"", null, undefined, NaN -> false
  • 이 외의 값 -> true

else절

  • if문엔 else 절을 붙일 수 있음
  • else 뒤에 이어지는 코드 블록은 조건이 거짓일 때 실행
let year = prompt('ECMAScript-2015 명세는 몇 년도에 출판되었을까요?', '');

if (year == 2015) {
  alert( '정답입니다!' );
} else {
  alert( '오답입니다!' ); // 2015 이외의 값을 입력한 경우
}

else if 절

  • 조건 여러 개를 처리할때 사용
let year = prompt('ECMAScript-2015 명세는 몇 년도에 출판되었을까요?', '');

if (year < 2015) {
  alert( '숫자를 좀 더 올려보세요.' );
} else if (year > 2015) {
  alert( '숫자를 좀 더 내려보세요.' );
} else {
  alert( '정답입니다!' );
}

조건부 연산자 ?

  • 조건에 따라 다른 값을 변수에 할당해줘야 할 때
let result = condition ? value1 : value2;

다중 ?

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

let message = (age < 3) ? '아기야 안녕?' :
  (age < 18) ? '안녕!' :
  (age < 100) ? '환영합니다!' :
  '나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!';

alert( message );

2. switch문

복수의 if 조건문은 switch문으로 바꿀 수 있음

  • break문이 없다면 switch문이 끝날때까지 모든 케이스를 확인
  • default는 선택
switch(x) {
  case 'value1':  // if (x === 'value1')
    ...
    [break]

  case 'value2':  // if (x === 'value2')
    ...
    [break]

  default:
    ...
    [break]
}

여러 switch문 묶기

  • 코드가 같은 case문은 한데 묶을 수 있음
let a = 3;

switch (a) {
  case 4:
    alert('계산이 맞습니다!');
    break;

  case 3: // (*) 두 case문을 묶음
  case 5:
    alert('계산이 틀립니다!');
    alert("수학 수업을 다시 들어보는걸 권유 드립니다.");
    break;

  default:
    alert('계산 결과가 이상하네요.');
}

자료형의 중요성

  • switch문은 일치 비교로 조건을 확인함
  • 비교하려는 값과 case문의 값의 형과 값이 같아야 해당 case문이 실행됨
let arg = prompt("값을 입력해주세요."); // 문자열 반환
switch (arg) {
  case '0':
  case '1':
    alert( '0이나 1을 입력하셨습니다.' );
    break;

  case '2':
    alert( '2를 입력하셨습니다.' );
    break;

  case 3: // 실행안됨
    alert( '이 코드는 절대 실행되지 않습니다!' );
    break;
  default:
    alert( '알 수 없는 값을 입력하셨습니다.' );
}

Reference

🔗 모던 JavaScript 튜토리얼

profile
공부한 내용은 바로바로 기록하자!

0개의 댓글