JavaScript

[JS] 객체 리터럴을 활용한 if문 제거

presentKey 2023. 3. 8. 01:28

참고 영상

  • https://www.youtube.com/watch?v=toUlXhTZZ8w&t=19s&ab_channel=%ED%94%84%EB%A1%B1%ED%8A%B8

⭕ 첫 번째 예제

if문 코드

function executePayment(paymentType) {
  if (paymentType === 'KAKAO_PAYMENT') {
    return '카카오 결제 처리';
  } else if (paymentType === 'NAVER_PAYMENT') {
    return '네이버 결제 처리';
  } else if (paymentType === 'COUPANG_PAYMENT') {
    return '쿠팡 결제 처리';
  } else if (paymentType === 'PAYCO_PAYMENT') {
    return '페이코 결제 처리';
  }
}

객체 활용 코드

const paymentMap = {
  KAKAO_PAYMENT: '카카오 결제 처리',
  NAVER_PAYMENT: '네이버 결제 처리',
  COUPANG_PAYMENT: '쿠팡 결제 처리',
  PAYCO_PAYMENT: '페이코 결제 처리',
};

function executePayment(paymentType) {
  return paymentMap[paymentType] ?? '알 수 없는 결제 처리';
}

console.log(executePayment('KAKAO_PAYMENT'));

⭕ 두 번째 예제

if문 코드

function payOnKaKao() {
  console.log('kakao pay 처리중');
}
function payOnNaver() {}
function payOnCoupang() {}
function payOnPayco() {}
function sendLog() {}

function executePayment(paymentType) {
  if (paymentType === 'KAKAO_PAYMENT') {
    payOnKaKao();
  } else if (paymentType === 'NAVER_PAYMENT') {
    payOnNaver();
  } else if (paymentType === 'COUPANG_PAYMENT') {
    sendLog();
    payOnCoupang();
  } else if (paymentType === 'PAYCO_PAYMENT') {
    sendLog();
    payOnPayco();
  }
}

executePayment('KAKAO_PAYMENT');

객체 활용 코드

function payOnKaKao() {
  console.log('kakao pay 처리중');
}
function payOnNaver() {}
function payOnCoupang() {}
function payOnPayco() {}
function sendLog() {}

const paymentMap = {
  KAKAO_PAYMENT() { // KAKAO_PAYMENT: function() {}
    payOnKaKao();
  },
  NAVER_PAYMENT() {
    payOnNaver();
  },
  COUPANG_PAYMENT() {
    sendLog();
    payOnCoupang();
  },
  PAYCO_PAYMENT() {
    sendLog();
    payOnPayco();
  },
};

function executePayment(paymentType) {
  paymentMap[paymentType]?.() ?? console.log('알 수 없는 결제 처리');
}

executePayment('KAKAO_PAYMENT');