본 내용은 모던 자바스크립트 Deep Dive. 이웅모 저. 에 출처하며 자바스크립트에 숨참고 deep dive 합니다.
블록문은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부른다.
if … else 문은 주어진 조건식(불리언 값으로 평가될 수 있는 표현식)의 평가 결과. 즉 논리적 참 또는 거짓에 따라 실행할 코드 블록을 결정한다.
if 문과 else 문은 2번 이상 사용할 수 없지만 else if 문은 여러번 사용할 수 있다.
코드 블록 내의 문이 하나라면 중괄호 생략가능
대부분의 if … else문은 삼항 조건 연산자로 바꿔 쓸 수 있다.
// 경우의 수가 세 가지인 경우 삼항 조건 연산자
var num = 2;
// 0은 false로 취급된다.
var kind = num? (num > 0 ? '양수' : '음수') : '영';
console.log(kind); // 양수
// 월을 영어로 변환한다. (11 -> 'November')
var month = 11;
var monthName;
switch (month) {
case 1: monthName = 'January';
case 2: monthName = 'February';
case 3: monthName = 'March';
case 4: monthName = 'April';
case 5: monthName = 'May';
case 6: monthName = 'June';
case 7: monthName = 'July';
case 8: monthName = 'August';
case 9: monthName = 'September';
case 10: monthName = 'October';
case 11: monthName = 'November';
case 12: monthName = 'December';
defualt: monthName = 'Invalid month';
}
console.log(monthName); // Invalid month
‘Invalid month’가 출력된다. 표현식의 평가 결과와 일치하는 case문을 실행했지만, 실행 후 switch 문을 탈출하지 않고 switch 문이 끝날 때까지 이후의 모든 case문과 default 문을 실행했기 때문이다. 이를 폴스루라 한다.
반복문은 조건식의 평가 결과가 참인 경우 코드 블록을 실행한다.
for문: 반복 횟수가 명확할 때
while문: 반복 횟수가 불명확할 때
var count = 0;
// count가 3보다 작을 때까지 코드 블록을 계속 반복 실행한다.
do {
console.log(count) // 0 1 2
count++;
} while (count < 3);
break은 *레이블 문, 반복문, switch 문의 코드 블록을 탈출한다.
// foo라는 레이블 식별자가 붙은 레이블 문
foo: console.log('foo');
레이블 문은 프로그램의 실행 순서를 제어하는 데 사용한다.
// foo라는 식별자가 붙은 레이블 블록문
foo: {
console.log(1);
break foo; // foo 레이블 블록문을 탈출한다.
console.log(2);
}
console.log('Done!');