커리된 함수(Curried function)이란 여러 개의 매개변수를 받는 대신에 항상 정확히 하나의 매개변수를 받는 함수를 말한다.
예르들어 특정한 문자와 반복할 횟수를 입력받으면 반복한 횟수만큼 문자를 출력하는 함수가 있다.
const repeatWith = (character, count) => character.repeat(count);
console.log(repeatWith('*', 5)); // *****
repeatWith
함수는 두 개의 매개변수를 입력받는다. 이 함수를 매개변수를 하나만 받도록 수정하고, 매개변수를 받았을 때 값을 반환하는 것이 아닌 새로운 함수를 반환하는 함수로 해보자.
const repeatWith = (character) => (count) => character.repeat(count);
이렇게 된 함수를 커리된 함수
라고 부른다. 이제 커리된 함수를 이용해서 동일한 동작을 하도록 코드를 작성해보자.
const repeatWith = (character) => (count) => character.repeat(count);
const repeatStar = repeatWith('*');
console.log(repeatStar(5)); // *****
이렇게 매개변수를 하나만 받도록 함수를 작성했고, 매개변수를 다 채우기 전에 함수를 호출하면 해당 매개변수가 적용된 새로운 함수를 반환한다. 반환된 함수를 실행하면 전에 입력했던 변수를 함수가 가지고 있고 이 변수를 이용해서 함수가 동작한다.