03. 조건문

제어문중에 하나인 조건문에 대해서 알아보겠습니다 :)

조건문

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

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

if문

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

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

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

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 입니다.

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

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

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

else if

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

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

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

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 영역을 실행합니다.

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

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

var status = '아침';

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

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

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개 정도 (적은 수의 갯수) 라면 성능상의 차이가 없을거에요. 하지만 조건의 수가 많아진다면 switchif 문보다 성능이 좋습니다. 가독성과 또한 좋아지고요 ( 개인적인 취향일 수 있습니다 ... )

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

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

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

삼항연산자

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

var n = 10

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

Last updated