자바스크립트 커링
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
왜 유용한가요?
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.
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
greeting('Hello There')('General Kenobi')
//returns Hello There General Kenobi
출처
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
Reference
이 문제에 관하여(자바스크립트 커링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jazsmith24/currying-in-javascript-10fi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)