본문 바로가기
( ´・・)/개발

[JavaScript] If, Switch 조건문

by shinsangah 2023. 5. 1.

If 조건문

// If 조건문


if (조건) {
  //
}
if (조건) {
  //
} else {
  //
}
if (조건1) {
  //
} else if (조건2) {
  //
} else if (조건3) {
  //
} else {
  //
}

function isPositive(number) {
  if (number > 0) {
    return "양수";
  }
  // return undefined (함수 내부에서 기본 값으로 들어가있음 'undefined')
}

console.log(isPositive(1)); // 양수
console.log(isPositive(10)); // 양수
console.log(isPositive(-2)); // undefined
console.log(isPositive(0)); // undefined


function isPositive(number) {
  if (number > 0) {
    return "양수";
  }
  // return undefined (함수 내부에서 기본 값으로 들어가있음 'undefined')
  else if (number < 0) {
    return "음수";
  } else {
    return "0";
  }
}

console.log(isPositive(1)); // 양수
console.log(isPositive(10)); // 양수
console.log(isPositive(-2)); // 음수
console.log(isPositive(0)); // 0


Switch 조건문

// Switch 조건문

switch (조건) {
  case 값1:
    // 조건이 '값1' 일 때 실행
    break;
  case 값2:
    // 조건이 '값2' 일 때 실행
    break;
  default:
  // 조건이 '값1'도 '값2'도 아닐 때 실행
}
function price(fruit) {
  let p;
  switch (fruit) {
    case "Apple":
      p = 1000;
      break;
    case "Banana":
      p = 1500;
      break;
    case "Cherry":
      p = 2000;
      break;
    default:
      p = 0;
  }

  return p; ↪
  //   p를 함수 밖으로 반환
}

console.log(price("Apple")); // 1000
console.log(price("Banana")); // 1500
console.log(price("Cherry")); // 2000
console.log(price("Hello")); // 0

현재 price 라는 함수는 switch문을 포함해서 다른 로직이 특별하게 없기 때문에
이렇게 p 라는 변수를 따로 만들어서 그때 그때 값을 할당하고,
바로 return 키워드로 반환하는 것을 최적화해서 바꿔보기 ▼

function price(fruit) {
  switch (fruit) {
    case "Apple":
      return 1000; 👈🏻 return 함수 자체가 여기서 종료됨
    case "Banana":
      return 1500;
    case "Cherry":
      return 2000;
    default:
      return 0;
  }
}

console.log(price("Apple")); // 1000
console.log(price("Banana")); // 1500
console.log(price("Cherry")); // 2000
console.log(price("Hello")); // 0

→ Switch문을 사용할 때 기본적으로는 break 키워드를 사용해서
각각의 case 동작이 마무리될 수 있도록 정리를 하지만,
상황에 따라서 위와 같이 return 키워드를 바로 사용한다면 굳이 break 키워드를 사용할 필요 없다.

return 키워드는 switch문을 종료하는 것을 떠나서 함수 자체도 그 자리에서 종료해버리기 때문.
Swtich문에서 기본적으로 break 키워드를 사용하되,
경우에 따라서 return 키워드를 사용한다면 추가로 break 키워드를 사용할 필요는 없다.

✔️ Switch 조건문은 '언제든 if 조건문으로 바꿀 수 있다.'

function price(fruit) {
  if (fruit === "Apple") {
    return 1000;
  } else if (fruit === "Banana") {
    return 1500;
  } else if (fruit === "Cherry") {
    return 2000;
  } else {
    return 0;
  }
}

console.log(price("Apple")); // 1000
console.log(price("Banana")); // 1500
console.log(price("Cherry")); // 2000
console.log(price("Hello")); //0

❓ 어떤게 더 직관적으로 보이고, 어떤게 더 작성하기 용이하다고 보이는가?
이런 구조는 기본적으로 어디까지나 취향에 맞게 사용하면 된다.

if문처럼 fruit 라는 매개변수가 정확하게 특정한 값(과일명)으로 떨어지는 경우,
if조건문 보다는 Switch 조건문을 선호하는 편이다.
if문에서는 '일치 연산자'를 또 따로 다 작성해야되기 때문에 불편하다.

☑️ Switch 조건문은 언제든지 if 조건문으로 작성할 수 있지만,
if 조건문은 상황에 따라서 Switch 조건문으로 작성할 수 없을 수도 있다.
Swtich 조건문은 소괄호 사이에 들어가는 조건이 정확하게 특정한 값으로 떨어질 때, 그런 상황에서만 유용하게 쓸 수 있다.