JavaScript Tutorial.38

ansunny1170·2021년 12월 27일
0
post-thumbnail

JS Switch Statement

switch 문은 다른 조건에 따라 다른 작업을 수행하는 데 사용된다.

The JavaScript

switch 문을 사용하여 실행할 많은 코드 블록 중 하나를 선택한다.Switch Statement
Syntax

switch(expression) {
  case x:
    // code block
    break;
  case y:
    // code block
    break;
  default:
    // code block
}

작동 방식은 다음과 같다:

  • switch 표현식은 한 번 평가된다.
  • 표현식의 값은 각 경우의 값과 비교된다.
  • 일치하는 항목이 있으면 연결된 코드 블록이 실행된다.
  • 일치하는 항목이 없으면 기본 코드 블록이 실행된다.

getDay() 메서드는 요일을 0에서 6 사이의 숫자로 반환한다.
(일요일=0, 월요일=1, 화요일=2 ..)
아래 예시에서는 요일 번호를 사용하여 요일 이름을 계산한다.

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript switch</h2>
<p id="demo"></p>
<script>
let day;
switch (new Date().getDay()) {
  case 0:
    day = "Sunday";
    break;
  case 1:
    day = "Monday";
    break;
  case 2:
    day = "Tuesday";
    break;
  case 3:
    day = "Wednesday";
    break;
  case 4:
    day = "Thursday";
    break;
  case 5:
    day = "Friday";
    break;
  case  6:
    day = "Saturday";
}
document.getElementById("demo").innerHTML = "Today is " + day;
</script>
</body>
</html>

The break Keyword

JavaScript가 break 키워드에 도달하면 switch 블록에서 나온다.
이렇게 하면 switch 블록 내에서 실행이 중지된다.
스위치 블록의 마지막 case를 break 할 필요는 없다. 어쨌든 블록은 거기서 끊긴다.

참고: break 문을 생략하면 평가가 케이스와 일치하지 않아도 다음 케이스가 실행된다.

The default Keyword

default 키워드는 case가 일치하지 않는 경우 실행할 코드를 지정한다.

getDay() 메서드는 요일을 0에서 6 사이의 숫자로 반환한다.
오늘이 토요일(6)도 일요일(0)도 아닌 경우의 기본 메시지를 작성한다:

Common Code Blocks

default 케이스가 꼭 스위치 블록의 마지막 케이스일 필요는 없다.

defaultswitch 블록의 마지막 케이스가 아닌 경우 default case를 break으로 끝내야 한다는 것을 잊지 말자.

Switching Details

때로는 다른 switch case가 동일한 코드(결과)를 사용하기를 원할 수 있다..

아래 예시의 경우 4와 5, 그리고 0과 6은 각각 같은 코드 블록을 공유합니다.

Switching Details

여러 case가 한 case의 값과 일치하는 경우 첫 번째 케이스가 선택된다.

일치하는 case가 없으면 프로그램은 default label로 이어진다.

default label이 없으면 프로그램은 switch 이후의 명령문을 계속 진행한다.

Strict Comparison

switch case는 strict 비교(===)를 사용한다.
값의 type이 같아야 한다..
엄격한 비교(strict comparison)는 피연산자가 같은 유형인 경우에만 true가 될 수 있다.
아래 예시에서는 x에 대해 일치하는 항목이 없다.

profile
공정 설비 개발/연구원에서 웹 서비스 개발자로 경력 이전하였습니다. Node.js 백엔드 기반 풀스택 개발자를 목표로 하고 있습니다.

0개의 댓글