커리 함수(Curry function) - 함수를 리턴하는 함수
다른 함수를 인자로 받는 경우 (콜백 함수)
function double(num) { return num * 2; } function doubleNum(func, num) { return func(num); }
- 함수 doubleNum은 다른 함수를 인자로 받는 고차 함수
- 함수 doubleNum의 첫 번째 인자 func에 함수가 들어올 경우
- 함수 func는 함수 doubleNum의 콜백 함수
- 아래와 같은 경우, 함수 double은 함수 doubleNum의 콜백 함수
함수를 리턴하는 경우
function adder(added) { return function (num) { return num + added; }; }
- 함수 adder는 다른 함수를 리턴하는 고차 함수
- adder는 인자 한 개를 입력받아서 함수(익명 함수)를 리턴
- 리턴되는 익명 함수는 인자 한 개를 받아서 added와 더한 값을 리턴
함수를 인자로 받고, 함수를 리턴하는 경우
function double(num) { return num * 2; } function doubleAdder(added, func) { const doubled = func(added); return function (num) { return num + doubled; }; }
- 함수 doubleAdder는 고차 함수
- 함수 doubleAdder의 인자 func는 함수 doubleAdder의 콜백 함수
- 함수 double은 함수 doubleAdder의 콜백으로 전달
doubleAdder(5, double)(3);
=> function doubleAdder(5, double) / function(3);
=> const doubled = double(5) => 5*2 = 10
=> return function (3) => return 3 + 10 = 10