오늘 읽은 범위 : 8장 제어문 (93p ~ 107p)
날짜 : 2023.11.6
목차
1. 블록문
2. 조건문
3. 반복문
4. break문
5. continue문
제어문
제어문은 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 떄 사용한다.
- 일반적으로 코드는 위에서 아래 방향으로 순차적으로 실행된다.
- 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다.
- 하지만 코드의 실행 순서가 변경된다는 것은 단순히 위에서 아래로 순차적으로 진행하는 직관적인 코드의 흐름을 혼란스럽게 만든다.
- 가독성이 좋지 않은 코드는 오류를 발생시키는 원인이 되기 때문에,
forEach
,map
,filter
,reduce
같은 고차 함수로 제어문의 사용을 억제하여 복잡성을 해결하려고 노력한다.
// 블록문
{
var foo = 10;
}
// 제어문
var x = 1;
if ( x < 10 ) {
x++
}
// 함수 선언문
function sum(a, b) {
return a + b;
}
if ... else 문
if (조건식) {
// 조건식이 참이면 이 코드 블록이 실행된다.
} else {
// 조건식이 거짓이면 이 코드 블록이 실행된다.
}
// 조건식을 추가하여 실행될 코드를 늘리고 싶으면 else if문을 사용한다.
if (조건식1) {
// 조건식1이 참이면 이 코드 블록이 실행된다.
} else if (조건식2) {
// 조건식2가 참이면 이 코드 블록이 실행된다.
} else {
// 조건식이 모두 거짓이면 이 코드 블록이 실행된다.
}
// + else if문은 여러번 사용이 가능하다.
// x가 짝수이면 result 변수에 문자열 '짝수'를 할당하고, 홀수이면 문자열 '홀수'를 할당한다.
var x = 2;
var result;
if ( x % 2) { // 2 % 2는 0이다. 이때 0은 false로 암묵적 강제 변환된다.
result = '홀수';
} else {
result = '짝수';
}
console.log(result); // 짝수
// 다음과 같이 삼항 조건 연산자로 바꿔 쓸 수 있다.
var x = 2;
// 0은 false로 취급한다.
var result = x % 2 ? '홀수' : '짝수';
console.log(result); // 짝수
switch 문
switch (표현식) {
case 표현식1:
switch 문의 표현식과 표현식 1이 일치하면 실행될 문;
break;
case 표현식2:
switch 문의 표현식과 표현식 2가 일치하면 실행될 문;
break;
default:
switch 문의 표현식과 일치하는 case 문이 없을 때 실행될 문;
}
for 문
for (변수 선언문 또는 할당문; 조건식; 증감식) {
조건식이 참인 경우 반복 실행될 문;
}
// 예제
for (var i = 0; i < 2; i++) {
console.log(i);
}
// 0
// 1
// 주사위를 던졌을 때, 두 눈의 합이 6이 되는 모든 경우를 출력하는 반복문
for (var i = 1; i <= 6; i++) {
for (var j = 1; j <= 6; j++) {
if (i + j === 6) {
console.log(`[${i}, ${j}]`);
}
}
}
// [1, 5]
// [2, 4]
// [3, 3]
// [4, 2]
// [5, 1]
while 문
var count = 0;
// count가 3보다 작을 때까지 코드 블록을 계속 반복 실행한다.
while (count < 3) {
console.log(count); // 0 1 2
count++;
}
// 무한루프
while (true) {...}
// if 문으로 탈출 조건을 만들고 break 문으로 코드 블록을 탈출한다.
var count = 0;
// 무한루프
while (true) {
console.log(count);
count++;
// count가 3이면 코드 블록을 탈출한다.
if (count === 3) break;
} // 0 1 2
do ... while 문
var count = 0;
// count가 3보다 작을 때까지 코드 블록을 계속 반복 실행한다.
do {
console.log(count); // 0 1 2
count++;
} while (count < 3);
// continue 문을 사용하지 않으면 if 문 내에 코드를 작성해야 한다.
for (var i = 0; i < string.length; i++) {
// 'l'이면 카운트를 증가시킨다.
if (string[i] === search) {
count++;
// code
// code
// code
}
}
// continue 문을 사용하면 if 문 밖에 코드를 작성할 수 있다.
for (var i = 0; i < string.length; i++) {
// 'l'이 아니면 카운트를 증가시키지 않은다.
if (string[i] !== search) continue;
count++;
// code
// code
// code
}