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)

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