JavaScript에서 함수를 카레하는 방법
홈페이지홈페이지 > 블로그 > JavaScript에서 함수를 카레하는 방법

JavaScript에서 함수를 카레하는 방법

Aug 17, 2023

이 JavaScript 언어 기능은 코드를 정리하는 데 도움이 되며 기능 작동 방식에 대한 새로운 이해를 제공합니다.

커리 함수는 JavaScript 코드를 더 읽기 쉽고 표현력 있게 만드는 데 도움이 됩니다. 커링 기술은 복잡한 논리를 더 작고 독립적이며 관리하기 쉬운 코드 조각으로 분해하려는 경우에 이상적입니다.

JavaScript의 카레 함수, 함수 커링 기술을 사용하여 부분 적용 함수를 만드는 방법, 카레 함수와 부분 적용 함수 모두에 대한 실제 사용 사례에 대해 모두 알아보세요.

커링(Currying)은 수학자 하스켈 B. 커리(Haskell B. Curry)의 이름을 따서 명명되었으며, 그 개념은 람다 미적분학(Lambda calculus)에서 유래되었습니다. 커링은 둘 이상의 매개변수를 받는 함수를 취하여 이를 일련의 단항(단일 매개변수) 함수로 나눕니다. 즉, 카레 함수는 한 번에 하나의 매개변수만 사용합니다.

다음은 카레 함수의 예입니다.

그만큼빌드샌드위치()함수는 다른 함수를 반환합니다. — 익명 함수는성분2 논쟁. 그런 다음 이 익명 함수는 다음을 수신하는 또 다른 익명 함수를 반환합니다.성분3 . 마지막으로 이 마지막 함수는 JavaScript에서 문자열 형식을 지정하는 방법인 템플릿 리터럴을 반환합니다.

여러분이 만든 것은 끝에 도달할 때까지 각 함수가 그 아래에 있는 함수를 호출하는 중첩 함수입니다. 이제 전화하면빌드샌드위치()단일 매개변수를 전달하면 아직 제공하지 않은 인수가 포함된 함수의 일부가 반환됩니다.

buildSandwich가 함수를 반환하는 출력을 볼 수 있습니다.

함수 호출을 완료하려면 세 가지 인수를 모두 제공해야 합니다.

이 코드는 "Bacon"을 첫 번째 함수에 전달하고 "Lettuce"를 두 번째 함수에 전달하며 "Tomato"를 마지막 함수에 전달합니다. 즉,빌드샌드위치()함수는 실제로 세 개의 함수로 나뉘며 각 함수는 하나의 매개변수만 받습니다.

전통적인 함수를 사용하여 카레를 만드는 것은 완벽하게 유효하지만, 모든 중첩은 깊이가 깊어질수록 꽤 추악해질 수 있습니다. 이 문제를 해결하려면 화살표 함수를 사용하고 더 깔끔한 구문을 활용할 수 있습니다.

이 리팩터링 버전은 더 간결하며, 일반 함수에 비해 화살표 함수를 사용하는 이점이 있습니다. 이전 함수와 동일한 방식으로 함수를 호출할 수 있습니다.

부분적으로 적용되는 함수는 카레링의 일반적인 용도입니다. 이 기술에서는 (모든 인수를 제공하는 대신) 한 번에 필요한 인수만 제공합니다. 필요한 모든 매개변수를 전달하여 함수를 호출할 때마다 해당 함수를 "적용"했다고 말합니다.

예를 살펴보겠습니다:

아래는 곱셈의 카레 버전입니다:

그만큼카레곱하기()함수는엑스첫 번째 함수에 대한 인수와와이두 번째 함수의 경우 두 값을 모두 곱합니다.

부분적으로 적용된 첫 번째 함수를 만들려면 다음을 호출하세요.카레여러()첫 번째 매개변수를 사용하여 반환된 함수를 변수에 할당합니다.

이 시점에서 코드는 "부분적으로 적용"되었습니다.카레곱하기() 기능. 그러니 언제든지 전화하고 싶을 때타임텐(),숫자 하나만 전달하면 해당 숫자에 자동으로 10이 곱해집니다(적용된 함수 내에 저장됨).

이를 통해 각각 고유한 기능이 고정된 여러 사용자 정의 함수를 생성하여 하나의 복잡한 함수를 기반으로 구축할 수 있습니다.

실제 웹 개발 사용 사례에 더 가까운 예를 살펴보세요. 아래에는업데이트ElemText()요소를 취하는 함수ID첫 번째 호출에서는 콘텐츠를, 두 번째 호출에서는 콘텐츠를 업데이트한 다음,ID귀하가 제공한 콘텐츠:

커링의 또 다른 일반적인 용도는 함수 합성입니다. 이를 통해 특정 순서로 작은 함수를 호출하고 이를 보다 복잡한 단일 함수로 결합할 수 있습니다.