알고리즘 - freeCodeCamp - Arguments Optional

NO PAIN, NO GAIN·2019년 12월 17일
0

algorithm

목록 보기
17/18

문제

매개변수가 두개 라면 더한 값을 반환하시오.
매개변수가 하나라면 함수를 반환하고, 반환한 함수를 이용해서 값을 더하시오.

예시

addTogether(2, 3) --> 5.
addTogether(2)(3) --> 5.
addTogether("http://bit.ly/IqT6zt") --> undefined.
addTogether(2, "3") --> undefined.
addTogether(2)([3]) --> undefined.

풀이

function addTogether() {
  const [num1, num2] = arguments; // 가.

  if (typeof num1 !== "number"){
    return ;
  } else if (num2 !== undefined) {
    if (typeof num2 !== "number") {
      return ;
    }
    return num1 + num2;
  }

  return function(val) { // 나.
    if (typeof val !== "number"){
      return ;
    }
    return num1 + val;
  }
}

가. 함수 addTogether에 들어온 매개변수를 조회할 수 있다. arguments로 조회할 수 있다. 사용한 방법은 비구조화할당이다.

매개변수가 두개로 들어오면 num1, num2가 숫자 타입인지 확인한다. 숫자타입이 아니라면, undefined를 반환한다. 반환할 때 undefined를 적어줘도 되지만 적어주지 않아도 세미콜론 하나만 적어도 된다. num2가 있고, 숫자 타입이면 num1 + num2를 반환한다.

나. 위에 조건들이 맞지 않다면 함수를 반환한다. 반환한 함수에 매개변수를 입력하면 매개변수가 숫자타입인지 확인하고, 숫자타입이 아니라면 undefined를 반환한다. 조건에 걸리지 않다면 num1 + val를 반환한다.

profile
갈고 닦자.

0개의 댓글