---
description: with 강은서
---

# 04. 제어문

> ## 제어문(Control flow statement)이란?
>
> #### : 소스 실행 순서, 즉 흐름(flow)을 제어(control)하는 명령문(statement)

* 조건에 따라 제어 → **조건문**
* 특정 부문 반복 → **반복문**

## 조건문(Conditional)

**1. if문** 조건이 맞을 때

{% tabs %}
{% tab title="First" %}
if(조건) {\
&#x20;   실행할 문장;\
}
{% endtab %}
{% endtabs %}

**2. if…else문** 조건이 맞을 때와 아닐 때

{% tabs %}
{% tab title="First" %}
if(조건) {\
&#x20;   실행할 문장;\
}\
else {\
&#x20;   실행할 문장;\
}
{% endtab %}

{% tab title="Second" %}
if(조건) {\
&#x20;   실행할 문장;\
} else {\
&#x20;   실행할 문장;\
}
{% endtab %}

{% tab title="Third" %}
_// 실행할 문장이 1줄일 때_\
if(조건)\
&#x20;   실행할 문장;\
else\
&#x20;   실행할 문장;
{% endtab %}
{% endtabs %}

**3. 조건 연산자** 조건이 하나이고 true와 false일 때 실행할 문장도 하나라면

{% tabs %}
{% tab title="First" %}
(조건) ? (true일 때 실행할 문장) : (false일 때 실행할 문장)
{% endtab %}
{% endtabs %}

**4. switch문** 조건이 여러 개일 때

{% tabs %}
{% tab title="First" %}
&#x20;switch(변수) {\
&#x20;   case “값1” : 실행할 문장;\
&#x20;   break;\
&#x20;   case “값2” : 실행할 문장;\
&#x20;   break;\
&#x20;   default : 실행할 문장;\
&#x20;}
{% endtab %}
{% endtabs %}

## Truthy and Falsy

: 논리형 자료 값은 true와 false뿐, 하지만 **true로 인정할 수 있는 값**과 **false로 인정할 수 있는 값**이 있다.

| falsy값    | 설명                  |
| --------- | ------------------- |
| 0         | 숫자 0                |
| ""        | 빈 문자                |
| Nan       | Not a Number, 숫자가 아 |
| undefined | 값이 할당되지 않음          |
| null      | 유효하지 않은 값           |

* falsy값을 제외한 나머지는 전부 truthy한 값이다.
* undefined와 null의 차이 → boolean문맥(둘 다 false), 숫자 문맥(undefined는 Nan, null은 0)

## 반복문(Loop)

**1. for문** 횟수가 정해져 있을 때

{% tabs %}
{% tab title="First" %}
for(초기값; 조건값; 증감값) {\
&#x20;   실행할 문장;\
}
{% endtab %}
{% endtabs %}

**2. while문** 횟수가 정해져 있지 않을 때

{% tabs %}
{% tab title="First" %}
while(조건) {\
&#x20;   실행할 문장;\
}
{% endtab %}
{% endtabs %}

**3. do…while문** 일단 한 번 실행 후 조건 확인

{% tabs %}
{% tab title="First" %}
do {\
&#x20;   실행할 문장;\
} while(조건);
{% endtab %}
{% endtabs %}

**4. break문** 반복문 종료

**5. continue문** 다음 명령 건너뛰기
