8.1 블록문
블록문(block statement)
- 0개 이상의 문을 중괄호로 묶은 것
- 블록문을 하나의 실행 단위로 취급
- 블록문의 끝에는 세미콜론을 붙이지 않음
//블록문
{
var foo = 10;
}
//제어문
var x =1;
if(x<10) {
x++;
}
//함수 선언문
function sum(a,b) {
return a+b;
}
8.2 조건문
조건문(conditional statement)
- 조건식의 평가 결과에 따라 코드 블록의 실행을 결정
- 조건식은 불리언 값으로 평가될 수 있는 표현식
8.2.1 if ~ else문
var num = 2;
var kind;
if(num > 0) kind = '양수';
else if (num < 0) kind = '음수';
else kind = '영';
console.log(kind); //양수
- 삼항 조건 연산자로 바꿔 쓸 수 있음
- 경우의 수가 3가지인 경우
var num =2;
//0은 false로 취급
var kind = num ? (num > 0 ? '양수' : '음수') : '영';
console.log(kind); //양수
8.2.2 switch문
- 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮김
- switch문의 표현식과 일치하는 case문이 없다면 실행 순서는 default문으로 이동
- switch문의 표현식은 불리언 값보다는 문자열이나 숫자 값인 경우가 많음
- 다양한 상황(case)에 따라 실행할 코드 블록을 결정할 때 사용
//월을 영어로 변환
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';
default: monthName = 'Invalid month';
}
console.log(monthName); //Invalid month
-> Invalid month가 출력
-> 조건식과 일치하는 case문으로 이동하여 문을 실행하였지만 문을 실행 후 switch문을 탈출하지 않고 switch문이
끝날때 까지 이후의 모든 case문과 default문을 실행하였기 때문
= 폴 스루 (fall through)
-break문 이용
//월을 영어로 변환
var month = 11;
var monthName;
switch(month) {
case 1 : monthName = 'January';
break;
case 2 : monthName = 'February';
break;
case 3 : monthName = 'March';
break;
case 4 : monthName = 'April';
break;
case 5 : monthName = 'May';
break;
case 6 : monthName = 'June';
break;
case 7 : monthName = 'July';
break;
case 8 : monthName = 'August';
break;
case 9 : monthName = 'September';
break;
case 10 : monthName = 'October';
break;
case 11: monthName = 'November';
break;
case 12 : monthName = 'December';
break;
default: monthName = 'Invalid month';
}
console.log(monthName); //Invalid month
8.3 반복문
반복문 (loop statement)
- 조건식의 평가 결과가 참인 경우 코드 블록을 실행
- 그 후 조건식을 다시 평가하여 여전히 참인 경우 코드 블록을 조건식이 거짓일때까지 계속 실행
8.3.1 for문
- 반복횟수가 명확할때 주로 사용
for(var i=0; i < 2; i++) {
console.log(i);
}
- 중첩 if문
for (var i =1; i <=6; i++) {
for(var j =1 ; j <=6; j++) {
if(i+j === 6) console.log(`[${i}, ${j}]`);
}
}
8.3.2 while문
- 반복횟수가 불명확할때 주로 사용
var count = 0;
//count가 3보다 작을 때까지 코드 블록을 계속 반복 실행
while(count < 3) {
console.log(count); // 0 1 2
count ++;
}
8.3.3 do ~while문
- 코드 블록을 먼저 실행하고 조건식을 평가
- 코드 블록은 무조건 한번 이상 실행
var count = 0;
//count가 3보다 작을 때 까지 코드 블록을 계속 반복 실행
do {
console.log(count); //0 1 2
count++;
}while (count < 3);
8.4 break문
-레이블문, 반복문, switch문의 코드 블록을 탈출
//outer라는 식별자가 붙은 레이블 for문
outer : for(var i = 0; i < 3; i++) {
for(var j = 0; j <3; j++) {
//i+j === 3이면 outer라는 식별자가 붙은 레이블 for문을 탈출
if(i+j === 3) break outer;
console.log(`inner[${i}, ${i}]`);
}
}
console.log(`Done!`);
8.5 coninue문
- 반복문의 코드 블록을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동 시킴
var string = 'Hello World';
var search = 'l';
var count = 0;
//문자열은 유사 배열이므로 for문으로 순회 가능
for(var i =0; i <string.length; i++) {
//'l'이 아니면 현 지점에서 실행을 중단하고 반복문의 증감식으로 이동
if(string[i] !== search) continue;
count++; // continue문이 실행되면 이 문은 실행되지 않음
}
console.log(count); //3
'JavaScript' 카테고리의 다른 글
[Deep dive] 10장 객체 리터럴 (0) | 2023.08.08 |
---|---|
[Deep dive] 9장 타입 변환과 단축 평가 (0) | 2023.08.07 |
[Deep dive] 7장 연산자 (0) | 2023.08.07 |
[Deep dive] 6장 데이터 타입 (0) | 2023.08.07 |
[Deep dive] 5장 표현식과 문 (0) | 2023.08.07 |