[Deep Dive] 08장 제어문
제어문은 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용.
1. 블록문
- 블록문은 0개 이상의 문을 중괄호(
{}
)로 묶은 것 - 자바스크립트는 블록문을 하나의 실행 단위로 취급
- 일반적으로 제어문이나 함수를 정의할 때 사용
- 블록문은 자체종결성을 가지므로 세미콜론(
;
)을 붙이지 않음
2. 조건문
조건문은 주어진 조건식의 평가 결과에 따라 코드 블록(블록문)의 실행을 결정.
if ... else
문
if ... else
문은 주어진 조건식의 논리적 참, 거짓에 따라 실행 블록 결정.
if (조건식){
// 조건식이 참(true)일때 이 코드 블록 실행
} else {
// 조건식이 거짓(false)일때 이 코드 블록 실행
}
조건문을 여러개 만들 수 있는데 else if
를 사용하면 된다
if (조건식1){
// 조건식1 참(true)일때 이 코드 블록 실행
} else if(조건식2) {
// 조건식2 참(true)일때 이 코드 블록 실행
} else if(조건식3){
// 조건식3 참(true)일때 이 코드 블록 실행
} else {
// 모든 조건식이 거짓(false)일때 이 코드 블록 실행
}
if ... else
문은 위에서 순서대로 진행된다 (범위를 조건으로 했을때 주의)
대부분의 if ... else
문은 삼항 조건 연산자로 표현할 수 있다
switch
문
switch
문은 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 같는 case
문으로 실행 흐름을 옮김.
switch (표현식) {
case 표현식1: 표현식과 표현식1이 일치하면 실행;
braek;
case 표현식2: 표현식과 표현식2가 일치하면 실행;
braek;
case 표현식3: 표현식과 표현식3이 일치하면 실행;
braek;
default: 아무것도 일치하지 않을때 실행;
}
switch
문의 case
를 보면 break
가 포함되어 있는데 코드 블록을 출하는 역할을 함.
`braek`를 사용하지 않으면 `default`가 실행된다.
* 폴스루(fall through)
switch
문에서 의도적으로 break
를 생략하여 여러 조건을 동일하게 사용한다.
3. 반복문
반복문은 조건식의 평가 결과가 참인 경우 코드 블록을 반복해서 실행(거짓일 때까지 반복).
< 자바스크립트의 반복문 대체 >
forEach
: 배열을 순회for...in
: 객체의 프로퍼티를 열거for...of
: 반복문 대체 [ES6]
for
문
for (변수선언 및 할당; 조건식; 증감식){
// 조건식이 참인 경우 반복해서 실행 (조건식이 거짓일 때까지)
}
// 1부터 10까지 출력
for (let i = 1; i<=10; i++){
console.log(i)
}
위 코드를 순서대로 살펴보면,
- i는
let
키워드를 사용해서 선언 및 1을 할당했고, -
i<=10
이 조건식으로 있고 현재 i는 1이므로true
→ 코드블록 실행 - i를 출력 → 1 출력
- 증감식으로
i++
, 코드블록 실행 이후 i가 1증가하고, - 이후 조건식의
true
,false
여부판단 → 코드블록 실행(조건식이false
일 때까지)
// 무한루프
for (;;){
// 코드실행
}
for
문의 무한루프는 이렇게 사용이 가능.for
문은 중첩할 수 있다.
while
문
while
문은 주어진 조건식의 평가 결과가 참(false
)이면 코드블록을 계속해서 반복 실행.
while(조건식){
// 조건식이 참(true)이면 코드 반복 실행
}
// 1부터 9까지 출력
let i = 1;
while(i<10){
console.log(i)
i++;
}
예시) 1 ~ 9 출력
// 무한루프
while(true){
// 코드 실행
}
do...while
문
do...while
문은 코드블록을 먼저 실행하고 조건식을 평가 → 무조건 한번은 실행
do{
// 코드 실행
} while(조건문)
4. break
문
break
문은 코드 블록을 탈출하는데 레이블문, 반복문, switch
문을 탈출한다
→ 이외 코드블록에서는 **SyntaxError(문법에러) 발생**
레이블문 : 식별자가 붙은 문을 말함
내부 코드블록이 아닌 외부 코드 블록을 탈출하려고 할때 식별자를 붙이고 braek
에 식별자를 명시.
outer: for (;;){
for (let i = 1; i<100; i++) {
console.log(i)
if (i === 50){
break outer;
}
}
}
i가 50 일때 외부코드블록을 탈출시킨다.
5. continue
문
continue
문은 반복문의 코드 블록 실행을 건너뛰고 진행한다.
for (let i = 1; i<10; i++) {
if (i === 5){
continue;
}
console.log(i)
}
i가 5일때 continue
가 있는 해당 지점부터 코드블록을 건너뛰고 i가 6일때로 진행된다.
이웅모 선생님의 모던 자바스크립트 Deep Dive를 공부하기 위해 정리한 글입니다.
혹시나 보시다가 고칠 부분이나 마음에 안드시는 부분이 있다면 말씀해주시면 감사하겠습니다!