조건문

지나·2022년 12월 6일
0
post-thumbnail


제어문과 조건문

원하는 결과를 얻기 위해 프로그램의 흐름을 제어해야만 하고, 이 때 사용하는 명령문을 제어문이라고 한다. 제어문은 결과 도출을 위해 논리적 판단을 하는 역할을 한다. 이 논리적 판단은, 조건을 비교하거나 일정 구간을 반복시키게끔 하는 명령문인 조건문, 반복문을 사용한다.




Truthy and Falsy

ture 또는 false 로 평가되는 값들

🥬 Truthy


if (true)
if ({})
if ([])
if (' ') // 공백
if ('0') // 문자열 안의 0
if ("0") // 문자열 안의 0
if (12n) 
if (3.14) // 양수로 된 숫자
if (-3.14) // 음수로 된 숫자
if (Infinity)
if (-Infinity)
  
  
  • 같다는 의미는 아님 !

console.log(999 == true, ' ' == true, {} == true);

false 출력


🧄 Falsy


if (false)
if (0)
if (-0)
if ('') // 공백이 없는 문자열 표시
if (null)
if (undefined)
if (NaN)

  
  • 어떤 값들은 타입변환되기도 함 !

console.log(0 == false, '' == false)

true 출력




if문

if (조건식) {
  조건식의 결과가 참일 경우 실행 할 코드
}
const age = true;

function sayAge(age) {
  if ( age ) {
    console.log("제 나이는 " + age + "살 입니다.");
  }
}
sayAge(25) // 제 나이는 25살 입니다. 출력

if문은 조건식의 결과가 참 true 이면 주어진 코드를 실행하고, 거짓 false 이면 아무것도 실행하지 않는다.


if...else문

if (조건식) {
  조건식의 결과가 참일 경우 실행할 코드
} else {
  조건식의 결과가 거짓일 경우 실행할 코드
}
const age = true;

function sayAge(age) {
  if ( age < 20 ) {
    console.log("제 나이는 " + age + "살 입니다.");
  } else {
    console.log("제 나이는 비밀입니다.");
  }
}

sayAge(18) // 제 나이는 18살 입니다. 출력
sayAge(25) // 제 나이는 비밀입니다. 출력

if...else문은 가장 일반적인 형태의 조건문이다.
조건식의 결과가 참 true 이면 처음으로 주어진 코드를 실행하고, 거짓 false 이면 else 뒤의 코드를 실행한다.


if...else if문

if (조건식1) {
  조건식1의 결과가 참일 경우 실행할 코드
} else if (조건식2) {
  조건식2의 결과가 참일 경우 실행할 코드
} else {
  조건식1의 결과도 거짓이고, 조건식2의 결과도 거짓일 경우 실행할 코드
}
const age = true;

function sayAge(age) {
  if ( age < 20 ) {
    console.log("제 나이는 " + age + "살 입니다.");
  } else if ( 20 <= age && age <= 35 ) {
    console.log("제 나이는 비밀입니다.");
  } else {
    console.log("먹을만큼 먹었답니다.^^");
  }
}

sayAge(18) // 제 나이는 18살 입니다. 출력
sayAge(25) // 제 나이는 비밀입니다. 출력
sayAge(38) // 먹을만큼 먹었답니다.^^ 출력

if...else if문은 여러 조건에 따른 명령을 실행시켜야 할 때 사용하는 조건문이다.
조건식을 여러개 명시할 수 있기 때문에 중첩된 if문을 간결하게 표현할 수 있다.
첫번째 if문의 조건식의 결과가 참 true 이면 첫번째로 주어진 코드를 실행하고,
두번째 if문의 조건식의 결과가 참 true 이면 두번째로 주어진 코드를 실행하고,
두 조건식이 모두 거짓 false 이면 마지막으로 주어진 코드를 실행한다.

이때, else if문은 여러 번 사용해도 좋지만, if문과 else문은 단 한번만 사용할 수 있다.


삼항 연산자 ~? ~ : ~

조건식 ? 반환값1 : 반환값2
let x = ture;
let y = x ? '참입니다요' : '거짓입니다요'; // 삼항 연산자 사용

console.log(y)
// '참입니다요' 출력
  • if...else 조건문의 대체제로 간편하게 쓰인다.
  • 조건문, 참일 경우 실행할 표현식, 거짓일 경우 실행할 표현식 세가지가 필요하다.

연산자형태설명
삼항연산자조건문 ? 참실행문 : 거짓실행문조건문이 참일 경우 첫번째 표현식 실행
조건문이 거짓일 경우 두번째 표현식 실행

return문 사용을 권장

const x = 22;

if (x % 4) {
  if (x % 2) {
    console.log('홀수입니다.');
  } else {
    console.log('짝수입니다.');
  }
} else {
  console.log('4의 배수입니다.');
}
function testNum () {
  const x = 22;

  if (x % 2) {
    console.log('홀수입니다.');
    return;
  }

  if (x % 4) {
    console.log('짝수입니다.');
    return;
  }

  console.log('4의 배수입니다.');
}

testNum();

중첩된 if문을 간결하게 사용하는 방식이다. 함수에서 사용하는 return문은 함수 실행을 완전히 종료시키는 역할을 한다. 함수에서의 return문은 조건문의 else문과 비슷한 맥락으로 사용되기 때문에 전체적으로 가독성 있는 코드를 위해서라면 else문을 남발하기 보단 return문으로 함수 실행을 종료시키자 !


switch

switch (조건값) {
  case1 : 조건문의 조건값이 값1일 경우, 실행 할 코드
  	break;
  case2 : 조건문의 조건값이 값2일 경우, 실행 할 코드
  	break;
  ...
  default : 조건문의 조건값이 case문의 값에 해당하지 않는 경우, 실행 할 코드
}
const fingersCount = 2;

switch (fingersCount) {
    // 주어진 조건값에 대한 실행 위치가 2, 0, 5 순으로 이동됨
  case 2:
    console.log('가위');
    break;
  case 0:
    console.log('바위');
    break;
  case 5:
    console.log('보');
    break;
  default:
    console.log('무효');
}

// '가위' 출력
const month = 1;
let season = '';

switch (month) {
  case 1: case 2: case 3:  // case문은 여러번 사용이 가능하다.
    season = '1분기'; break;

  case 4: case 5: case 6:
    season = '2분기'; break;

  case 7: case 8: case 9:
    season = '3분기'; break;

  case 10: case 11: case 12:
    season = '4분기'; break;

  default: 
    season = '잘못된 월입니다.';
}

console.log(season);
  • 다수의 값들과 그 값에 대한 여러 실행이 필요할 때 사용된다.
  • if...else 문과 마찬가지로 여러 조건에 따른 명령을 실행시켜야 할 때 사용하는 조건문이다.
  • if...else 문 보다는 가독성이 좋다.
  • switch문의 조건값이, case문의 특정 값일 때 주어진 코드가 실행된다.
  • break문으로 case문을 빠져나오기 때문에, break문을 반드시 포함하고 있어야 한다.
  • break문이 없다면, switch문의 case문들이 모두 실행된다.
  • switch문의 조건값이, case문의 특정 값에 전부 해당되지 않을 경우 default문이 실행된다.

0개의 댓글