아름이의 개발로그

[공부 기록] JavaScript - currying

|

커링(Currying)이란?

매개변수가 여러 개인 함수를 하나의 매개변수를 갖는 함수의 체인으로 바꾸는 테크닉이다.
다른 말로 하면, 함수가 모든 매개변수를 한 번에 받는 것 대신에, 첫 번째 매개변수를 받고 새로운 함수를 리턴하고 두 번째 매개변수를 받고 새 함수를 리턴하고 세 번째, 네 번째, 결국 모든 매개변수를 받을 때까지 반복하는 것이다.
add(1, 2, 3);add(1)(2)(3); 이렇게 호출할 수 있게 되는 것이다.

예를 들어서

인사하는 함수를 커링을 사용하여 만든다고 할 때 아래처럼 정의할 수 있을 것이다.

var greetCurried = function(greeting) {
  return function(name) {
    console.log(greeting + ", " + name);
  };
};

아래처럼 매개변수에 인삿말을 넣은 함수를 먼저 선언하고 이름만 바꿔서 호출하도록 만들 수 있다.

var greetHello = greetCurried("Hello");
greetHello("Heidi"); //"Hello, Heidi"
greetHello("Eddie"); //"Hello, Eddie"

커링 테크닉을 사용하면 자주 호출되는 함수에서 중복되어 넘겨지는 매개변수 부분은 미리 값을 세팅해두고 나머지 부분에 다른 값을 넣어 재사용하기에 유용하다.

출처
https://codeburst.io/currying-in-javascript-ba51eb9778dc
https://sujinlee.me/currying-in-functional-javascript/

Comments