8.1. 블록문

0개 이상의 문을 중괄호{}로 묶은 것으로, 코드 블록이라고도 부름

// 블록문
{
	const foo: number = 10;
}

// 제어문
let x: number = 1;
while (x < 5) {
	if (x < 10) {
		x++;
	}
}

// 함수 선언문
function sum(a: number, b: number) {
	return a + b;
}

8.2. 조건문

// if ... else 문
if (조건식) {
	console.log(true);
} else {
	console.log(false);
}

// if .. else if ... else
if (조건식1) {
	console.log(true);
} else if (조건식2) {
	console.log(true);
} else {
	console.log(false);
}

// switch
switch (표현식) {
	case 표현식1:
		console.log("표현식과 표현식1이 일치");
		break; // break를 하지 않으면 아래 case 문(case2, default)들이 실행됨
	case 표현식2:
		console.log("표현식과 표현식2이 일치");
		break; // break를 하지 않으면 아래 default 문이 실행됨
	default:
		console.log("표현식과 일치하는 case가 없음");
}

8.3. 반복문

8.3.1. for, while, do…while

// for문
for (let i = 0; i < 3; i++) {
	console.log(i);     // 0 1 2
}

for (;;) { … }        // 무한루프
// while문
let count = 0;
while (count < 3) {
	console.log(count); // 0 1 2
	count++;
}

while (true) {...}    // 무한루프
// do...while문
let count = 0; 
do {                 // count가 3보다 작을 때까지 코드 뷸록 반복
	console.log(count); /1 0 1 2
	count++;
} while (count < 3);
// break문
let count = 0;       
while (true) {
	console.log(count);    // 0 1 2
	count++;
	if (count > 2) break;  // 조건문과 break 이용하여 무한루프 탈출 
}

// continue문
let num = 0;
while (num < 10) {
	count++;
	if (num%2) continue;   // continue를 만나면 아래 문 실행않고 증감식으로 이동
	console.log(num);      // 1 3 5 7 9
}

8.3.2. for … in

Object에 있는 key에 차례대로 접근할 때 사용하는 반목문

const object = {
	a: 1,
	b: 2,
	c: 3
};

Object.prototype.foo = function() { return 0; };

for (const key in object) {
	console.log(key, object[key]); // a 1 b 2 c 3 foo function()...
}

8.3.3. for … of

Iterable(반복 가능한)한 객체의 순회를 도와주는 반복문