자바스크립트 커링

6284 단어 currying
함수형 프로그래밍에서 함수를 전달하고 반환하는 기능을 갖는 것은 고차 함수, 순수 함수 및 커링과 같은 개념을 가져왔습니다. 이 기사에서 우리는 커링이 어떻게 작동하는지, 그리고 소프트웨어 개발자로서 우리의 작업에서 커링이 어떻게 유용한지 알아볼 것입니다.

커링이란?



Currying은 함수가 한 번에 하나씩 여러 인수를 받는 프로세스입니다. Currying은 f(a, b, c)로 호출 가능한 함수를 f(a)(b)(c)로 호출 가능한 함수로 변환합니다. 커링된 함수는 다음 인수 인라인을 예상하는 새 함수를 반환합니다.

커링을 사용하면 가볍고 깔끔하게 보이는 기능을 사용할 수 있습니다. 또한 함수의 순서를 구성할 수 있습니다. 특정 호출 순서가 적용되고 준수되도록 합니다. 최종 출력은 모든 종속성이 통과된 경우에만 반환됩니다. 인수는 클로저와 함께 "활성"으로 유지되며 커링 체인의 최종 함수가 반환되고 실행될 때 모두 실행에 사용됩니다.

코드에서 커링을 어떻게 사용하시겠습니까?



커링은 클로저에 의해 작동합니다. 중첩된 함수에 의해 생성된 클로저는 각 인수에 대한 액세스를 유지합니다. 따라서 내부 함수는 모든 인수에 액세스할 수 있습니다.



간단한 추가 기능을 살펴보겠습니다. 3개의 피연산자를 인수로 받아들이고 3개의 합계를 결과로 반환합니다.

예시

function add(a,b,c){
 return a + b + c;
}

너무 적거나(이상한 결과) 너무 많이(초과 인수가 무시됨) 호출할 수 있습니다.

add(1,2,3) --> 6 
add(1,2) --> NaN
add(1,2,3,4) --> 6 //Extra parameters will be ignored.

예 2

let greeting = function (a) {
    return function (b) {
        return a + ' ' + b
    }
}


let hello = greeting('Hello')
let morning = greeting('Good morning')

hello('Austin') // returns Hello Austin
hello('Roy') // returns Hello Roy
morning('Austin') // returns Good morning Austin
morning('Roy') //returns Good Morning Roy

인사말에서 생성된 두 함수(hello 및 morning)는 각각 인사말 문을 생성하기 위해 제공된 입력을 처리하는 함수를 반환합니다. 그들은 또한 인사할 사람의 이름인 인수를 취합니다.

위의 경우 인사말은 생성된 두 개의 함수 hello 및 morning과 함께 함수 팩토리로도 사용됩니다.

내부 함수는 다음과 같이 첫 번째 호출 후에 호출될 수도 있습니다.

greeting('Hello There')('General Kenobi')
//returns Hello There General Kenobi

왜 유용한가요?


  • Currying은 동일한 변수를 반복해서 전달하지 않도록 도와줍니다.
  • 고차 함수를 만드는 데 도움이 됩니다. 이벤트 처리에 매우 유용합니다.
  • 작은 부품을 쉽게 구성하고 재사용할 수 있습니다.

  • 출처
    https://javascript.info/currying-partials
    https://blog.bitsrc.io/understanding-currying-in-javascript-ceb2188c339
    https://medium.com/@kbrainwave/currying-in-javascript-ce6da2d324fe
    https://codeburst.io/currying-in-javascript-ba51eb9778dc
    https://www.digitalocean.com/community/tutorials/an-introduction-to-closures-and-currying-in-javascript#what-is-currying

    좋은 웹페이지 즐겨찾기