# 03. 조건문

![](https://3676071105-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LNPupV2z3QokH-IFxbX%2F-LOHM2eHUKH3LqAekB9Y%2F-LOHM3AbG-OEdvQH7uj8%2Fbody.png?generation=1538980072072282\&alt=media)

## 조건문

먼저 조건문은 조건에 따라서 동작하는 방식이 달라지게 됩니다.

여러가지 조건문과 예제를 알아보겠습니다.

### if문

if은 Boolean (true, false) 값에 따라 실행여부를 판단합니다.

```javascript
if (조건){
  // 조건 성립시 실행되는 영역 입니다. 조건 미성립시 건너 뜁니다.
}
```

> 간단한 문제\
> 숫자가 4 이상일때 콘솔에 '4보다 큽니다' 를 출력하세요.

```javascript
var num = 5; // 변수 선언
// 전시간에 배웠던 비교연산입니다. 
// if 안의 조건은 true, false 둘중 하나로 판단됩니다.
if(num > 4){ // 5 > 4 => 5는 4보다 크니까 true 입니다. 
  // 위의 조건이 true이기 때문에 해당 구문은 실행됩니다.
  console.log('4보다 큽니다.'); 
}
// num2 가 3일때는 어떻게 될까요 ?
var num2 = 3; 
// 3 > 4 => 당연히 false 겠죠 :)
if(num2 > 4){ 
  // 조건이 성립하지 않으므로 이 구문은 실행되지 않습니다.  
  console.log('4보다 큽니다'); 
}
```

### else

if 문은 조건이 성립할때 실행됩니다. 그럼 조건이 성립하지 않을 때는 어떻게 실행시킬까요?

이때 사용하는것이 바로 **else** 입니다.

```javascript
if(조건문){
  // 조건 1 실행 영역
}else{
  // 조건 1의 조건이 성립하지 않을 경우 실행될 영역
}
```

> 간단한 문제\
> 숫자가 4 이상일때 콘솔에 '4보다 큽니다' 를 4 이하면 '4보다 작습니다'를 출력해주세요

```javascript
var num = 3;
if (num > 4) { // false
    console.log('4 보다 큽니다')
} else { // if 의 조건이 성립하지 않기 때문에 else 영역이 실행됩니다.
    console.log('4 보다 작습니다')
}
```

### else if

조건을 여러개로 나눠서 실행하고 싶을 때는 else if 를 이용할 수 있습니다.

```javascript
if(조건문){
  // 조건 1 실행영역
}else if(조건2){
  // 조건 2 실행영역
}else{
  // 어떠한 조건도 성립하지 않았을때
}
```

> 간단한 문제\
> 10보다 크다면 '10보다 큽니다'를 5 보다 크다면 '5보다 큽니다'를 두 조건 다 해당하지 않는다면 '5 보다 작습니다'를 출력해주세요

```javascript
var num = 8;
if (num > 10) { // false
    console.log('10 보다 큽니다');
} else if (num > 5) { // true
    console.log('5 보다 큽니다');
} else {
    console.log('5 보다 작습니다');
}
```

### switch

switch 문은 조건에 맞는 case 영역을 실행합니다.

```javascript
switch(조건) {
  case 조건1:
    // 조건1 실행
  case 조건2:
    // 조건2 실행  
  case 조건3:
    // 조건3 실행
  default: // 조건에 부합하는 case가 없다면  
    // 디폴트 실행
}
```

> 간단한 문제\
> 아침이면 커피를 마시고 점심이면 점심을먹고 저녁이면 퇴근을 한다를 출력해주세요.

```javascript
var status = '아침';

switch(status) {
  // case에는 status === '아침'과 같은 조건문이 들어갈 수 없어요
  case '아침': 
    console.log('하루를 버티기 위해선 커피를 마셔야 해요');  
  case '점심': 
    console.log('배고파요 점심 먹으러가요');  
  case '저녁': 
    console.log('야근은 안됩니다 퇴근하시죠');  
  default:   
   console.log('성립되는 조건이없어요');
}
```

코드를 실행 시켜 보시면 우리가 생각하기에는 아침이니까 **첫번째 case** '하루를 버티기 위해선 커피를 마셔야 해요' 만 출력될줄 알았는데 모든 **case**와 **default case** 까지 실행됩니다.\
이 때 필요한게 **break** 입니다. 코드의 흐름을 멈출 수 있게 도와줍니다.

```javascript
var status = '아침';

switch(status) {
  // case에는 status === '아침'과 같은 조건문이 들어갈 수 없어요
  case '아침': // 해당 case 를 실행합니다.
    console.log('하루를 버티기 위해선 커피를 마셔야 해요');  
    break; // break 문을 만나면 다음 case 로 가지 않고 실행을 멈춥니다.
  case '점심': 
    console.log('배고파요 점심 먹으러가요');  
    break;
  case '저녁': 
    console.log('야근은 안됩니다 퇴근하시죠');  
    break;
  default:   
   console.log('성립되는 조건이없어요');
}
```

### Switch vs If

조건문을 공부하다보면 도대체 언제 if 를 쓰고 switch 를 써야하나요 ? 라는 의문이 들 수 있습니다. 사실 if 문의 문제를 switch로 switch의 문제를 if 로 변경할 수 있거든요.

조건이 5개 정도 (적은 수의 갯수) 라면 성능상의 차이가 없을거에요.\
하지만 조건의 수가 많아진다면 **switch**가 **if** 문보다 성능이 좋습니다.\
가독성과 또한 좋아지고요 ( 개인적인 취향일 수 있습니다 ... )

**if** 문은 코드의 처음부터 조건을 비교해 내려가며 코드를 실행 하지만 **switch** 문은 해당 **case**들을 **메모리**에 올려놓기 때문에 해당 case로 점프가 가능합니다.

하지만 매우 많은 조건의 **switch**문 이라면 조건들이 모두 메모리에 올라가기 때문에 불필요한 메모리를 소요할 수 있습니다.

무엇이 좋다 말할 수는 없지만 상황에 따라서 적절하게 사용할줄 알아야한다고 생각합니다 :)

#### 삼항연산자&#x20;

조건 ? 참일 때 실행되는 표현식 : 거짓일 때 실행되는 표현식

```javascript
var n = 10

var result = n > 5 ? 'n이 5 보다 크다' : 'n이 5보다 작다'
```
