(p.93 -107) 24년 12월 2일
제어문이란?
제어문(Control flow statement)은 주어진 조건에 따라 코드 **블록을 실행(조건문)**하거나 **반복 실행(반복문)**할 때 사용한다.
일반적으로 코드는 위에서 아래 방향으로 순차적으로 실행지만, 제어문은 코드의 실행 순서를 인위적으로 제어할 수 있다.
하지만, 코드의 실행 순서가 변경된다는것은 단순히 위에서 아래로 순차적으로 진행하는 직관적인 코드의 흐름을 혼란스럽게 만든다.
따라서 제어문은 코드의 흐름을 이해하기 어렵게 만들어 가독성을 해치는 단점이 있다.
forEach, map, filter, reduce 같은 고차함수를 사용한 함수 프로그래밍 기법에서는 제어문의 사용을 억제하여 복잡성을 해결하려고 노력한다.
제어문 요약표
구분 |
설명 |
장점 |
단점 |
블록문 |
**- {} **로 감싸 코드 블록의 범위를 정의. |
|
|
- 주로 조건문이나 반복문에서 사용되며, 지역 변수를 관리하기 위한 스코프를 설정. | - 스코프(범위) 관리 가능
- 여러 문장을 하나의 실행 단위로 묶을 수 있음 | - 단독으로 사용될 경우 실행 흐름에 큰 영향을 미치지 않음
- 반드시 다른 제어문과 함께 사용 필요 |
| 조건문
if..else | - 특정 조건에 따라 코드 블록 실행.
**-
else if
**를 통해 여러 조건을 처리 가능. | - 간단하고 직관적
- 다양한 조건 분기 가능 | - 조건이 많아지면 코드 가독성 저하
- 중첩된 조건문은 디버깅과 유지보수가 어려울 수 있음 |
| 조건문
switch | - 변수 값을 여러 **
case
**와 비교하여 일치하는 블록 실행.
- **default
**를 통해 조건에 맞지 않는 경우를 처리 가능. | - 다중 조건 분기에 적합
- **if..else
**보다 가독성 우수 | - 숫자 또는 문자열 같은 단순 조건에만 사용 가능
- 복잡한 조건 처리에 적합하지 않음 |
| 반복문
for | - 정해진 횟수만큼 반복. (조건이 명확할 때)
- 초기값, 조건, 증감식을 지정하여 명확히 제어.
- 일정한 패턴으로 값을 증가/감소시킬 때 주로 사용 | - 반복 횟수를 명확히 정의 가능
- 배열, 리스트 등 데이터 순회에 적합 | - 조건 설정 오류 시 무한 루프 발생 가능
- 반복 종료 시점이 명확하지 않으면 비효율적 |
| 반복문
while | - 조건이 참일 동안 반복 실행.
- 조건이 거짓이 되면 종료.
- 반복 횟수가 정해져 있지 않거나 동적으로 변할 때 사용 | - 조건 기반 반복에 적합
- 동적 조건에 따라 유연하게 반복 가능 | - 초기 조건을 잘못 설정하면 무한 루프 위험
- 반복 횟수가 명확하지 않음 |
| 반복문
do..while | - 블록을 최소 한 번 실행한 후 조건을 평가.
- 조건이 참이면 반복, 거짓이면 종료. | - 조건에 관계없이 최소 한 번은 실행 보장
- 사용자 입력 등 초기 조건 확인이 필요한 경우 적합 | - 조건이 거짓이어도 한 번 실행된다는 점이 의도치 않은 동작을 유발할 수 있음 |
| continue | - 현재 반복을 건너뛰고 다음 반복으로 진행.
- 코드가 길어질 경우 활용해서 가독성을 높일 수 있음 | - 불필요한 작업을 생략하여 효율성 향상
- 특정 조건을 무시하고 다음 루프 진행 가능 | - 과도한 사용 시 코드 가독성 저하
- 루프 조건을 이해하기 어렵게 만듦 |
| break | - 레이블 문, 반복문(for, for…in, for…of, while, do…while) 또는 switch 문의 코드 블록을 탈출 | - 특정 조건에서 빠르게 종료 가능
- 무의미한 반복을 줄이고 실행 효율성 개선 | - 코드 흐름이 갑작스럽게 중단되어 가독성 저하 가능
- 의도치 않은 종료 발생 가능 |
제어문의 종류 및 설명
8.1. 블록문
- 설명:
-
**{}중괄호
**로 0개 이상의 문들을 묶은 것들의 (코드의 블록 또는 블록이라고 표현) 실행 범위를 정의하는 문법.
-
**스코프(변수의 유효 범위)**를 지정하거나 복잡한 구문을 구조화할 때 사용합니다.
-
자바스크립트는 블록문을 하나의 단위로 취급한다.
-
블록문은 단독으로 사용할 수도 있으나 일반적으로 제어문(if
, for
, while
등)이나 함수 선언문 등에서 사용한다.
-
문의 끝에는 세미 콜론(;)을 붙이는 것이 일반적이지만 블록문은 세미콜론을 붙이지 않는다.
• 블록문은 여러 문을 묶는 역할을 하며, 세미콜론은 개별 문을 끝내는 데 사용되기 때문입니다.
구분 |
블록문 |
일반문 |
형태 |
{ 문1; 문2; ... } |
단일 실행 가능한 문 |
세미콜론 |
블록문 끝에는 세미콜론 없음 |
문 끝에 세미콜론 필수 |
예시 |
{ let a = 10; console.log(a); } |
let a = 10; |
사용 위치 |
제어문, 함수 정의 등 여러 문 묶음에서 사용 |
개별 동작을 수행할 때 사용 |
- 장점:
- 스코프(범위) 관리 가능
- 여러 문장을 하나의 실행 단위로 묶을 수 있음
- 단점:
- 단독으로 사용될 경우 실행 흐름에 큰 영향을 미치지 않음
- 반드시 다른 제어문과 함께 사용 필요
- 활용:
- 여러 명령어를 하나의 실행 단위로 묶기.
- 함수, 루프 내부에서 지역 변수의 스코프 제한.
- 반복문, 조건문 등에서 사용.
- 여러 명령문을 하나의 실행 단위로 묶는 데 사용됩니다.
- 예제: