JS의 커링

2023-01-29
  • javascript
조회수 회

1. 시작

토스 코딩테스트에 비슷하게 있기도 하고, 모던 js 튜토리얼에 있는 문제를 먼저 다뤄보자.

1.1. 문제

먼저, 인수들을 받아서 모두 합해주는 함수를 만드는 것은 쉽다. arguments를 사용해도 되고, 나머지 인수를 사용해도 될 것이다.

// arguments를 사용
function sum_args() {
    let result = 0;
    for (let i of arguments) {
        result += i;
    }
    return result;
}

console.log(sum_args(5, -1, 2)); //6

// 나머지 인수를 사용한 버전
function sum_args(...rest) {
    let result = 0;
    for (let i of rest) {
        result += i;
    }
    return result;
}

console.log(sum_args(5, -1, 2)); //6

그러면 임의의 수만큼의 괄호를 이용해서 합계를 구하는 함수를 짜려면 어떻게 해야 하는가? 다음과 같이 작동하도록 sum 함수를 만드는 문제이다.

sum(5)(-1)(2); // 6

1.2. 기본적 해답

모던 JS 튜토리얼에서의 내용을 먼저 보자. 여기서는 일단 다음과 같은 식을 만족하는 함수를 만드는 것을 목표로 한다.

sum(1)(2)==3; //true
sum(5)(-1)(2) == 6; //true

그러려면 일단 sum은 함수를 반환해야 한다. 그리고 sum이 반환하는 함수는 현재까지의 합을 메모리에 저장하고 있어야 한다.

Profile picture

김성현(Kim Sung Hyun)

서강대학교에서 기계공학과 컴퓨터공학을 복수전공하였습니다. 흔히 `마녀`라는 닉네임을 씁니다. 어떤 대단한 뜻을 품고 사는 사람은 아닙니다. 그저 멋진 사람들이 내는 빛을 따라가다 보니 여기까지 왔고, 앞으로도 그렇게 살 수 있었으면 좋겠다고 생각하는 사람입니다. 이곳에 찾아오신 당신과도 함께할 수 있어 영광입니다.