제어문(control flow statement)은 조건에 따라 코드 블록을 실행하거나 반복 실행할 때 사용합니다. 블록문은 0개 이상의 문을 중괄호로 묶은 것으로 코드 블록, 블록이라고도 합니다. 자바스크립트는 블록문을 하나의 실행단위로 취급합니다.
조건문(conditional statement)
조건문에는 if…else문과 switch문이 있습니다.
if…else문
if…else문은 3가지 형태로 사용할 수 있습니다. if만 사용하여 해당 조건이 참인 경우를 확인하거나 if, else를 사용하여 참인 경우와 거짓인 경우 실행할 블록문을 설정하거나 if, else if, else 를 사용하여 여러 가지 조건에 따른 실행 코드를 설정할 수 있습니다. 이때 블록문이 간결할 경우, 중괄호를 생략할 수도 있습니다.
if (x > 0) return true;
if (x > 0) {
return true;
} else {
return false;
}
if (x > 0) {
return "positive";
} else if (x < 0) {
return "negative";
} else {
return "zero";
}
switch 문
switch문은 조건의 대상이 될 표현식을 적어주고, case 키워드에 값을 적어줘서 조건의 대상이 값과 일치할 때 실행할 문을 작성합니다. 주의할 점은 case 마다 break 키워드를 써서 반복문을 탈출하게 해야 하며, 앞선 케이스에 해당되지 않을 경우 실행될 default를 적는 경우에는 break를 생략할 수 있습니다. 또한 폴스루(fall through)를 활용해서 여러개의 case문을 하나의 조건으로 사용할 수도 있습니다.
const arr = new Array(10).fill(0).map((_, i) => i + 1);
for (const el of arr) {
let position = "";
switch (el) {
case 1:
position = "start";
break;
case 10:
position = "end";
break;
default:
position = "middle";
}
console.log("position: ", position);
// 폴스루 사용
let isEven = false;
switch (el) {
case 2:
case 4:
case 6:
case 8:
case 10:
isEven = true;
break;
default:
isEven = false;
}
console.log("isEven: ", isEven);
}
반복문(loop statement)
for 문
가장 일반적으로 사용하는 반복문입니다. 조건이 거짓으로 평가될 때까지 블록문을 반복합니다. for() 내부에 변수 선언 또는 할당문, 조건식, 증감식을 넣어주고 세미콜론(;)으로 구분해줍니다.
for(let i = 0; i < 3; i++){
console.log(i)
}
while 문
조건이 참인 경우 블록문을 반복합니다. 반복 횟수가 불분명할 때 주로 사용합니다. 조건이 거짓인 경우 블록문을 실행하지 않고 종료합니다. count가 0일 때는 조건이 거짓이므로 블록문이 실행되지 않습니다.
let count = 3;
while (count > 0) {
console.log(count);
count--;
}
do … while 문
do에 있는 블록문을 무조건 한 번 실행하고, 이후 while 조건문이 참인 경우만 실행합니다. 아래 코드에서 조건문에 따르면 1, 2만 만족하지만 do에 있는 블록문을 무조건 실행하므로 0도 출력이 됩니다.
let count = 0;
do {
console.log(count);
count++;
} while (count > 0 && count < 3);
break
모든 코드 블록이 아니라 반복문, switch문의 코드 블록을 탈출합니다.
continue
반복문의 증감식으로 실행 흐름을 이동시켜서 실행합니다.
참고자료
- 모던 자바스크립트 Deep Dive