>  기사  >  웹 프론트엔드  >  JavaScript의 함수형 프로그래밍의 고급 응용

JavaScript의 함수형 프로그래밍의 고급 응용

PHPz
PHPz원래의
2023-06-15 23:01:411350검색

JavaScript는 함수형 프로그래밍을 지원하는 언어입니다. 함수형 프로그래밍의 핵심 아이디어는 데이터와 함수를 분리하여 프로그램의 불변성과 부작용이 없음을 강조하는 것입니다. 함수형 프로그래밍은 간결한 구문을 가지며 코드 구성 및 테스트에 큰 이점이 있습니다. 이 기사에서는 JavaScript의 함수형 프로그래밍의 일부 고급 응용 프로그램을 소개합니다.

  1. 순수 함수

함수 프로그래밍에서 가장 기본적인 개념 중 하나는 함수의 순수성입니다. 순수 함수란 언제든지 동일한 매개변수를 입력하는 함수가 부작용 없이 동일한 결과를 얻는다는 의미입니다. 이런 함수의 장점은 동시성 환경에서 캐싱이 쉽다는 점과, 재귀 처리 및 불필요한 반복 계산 방지에도 도움이 된다는 것입니다. 덧셈은 다음 함수를 통해 구현할 수 있습니다:

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

이 함수는 전형적인 순수 함수입니다. 특정 입력에서만 출력이 발생하기 때문입니다. 그러나 일반적인 부작용은 일부 변수의 값을 수정하거나 외부 함수를 호출하는 등 함수가 위치한 환경에 영향을 미친다는 것입니다. 따라서 함수형 프로그래밍에서는 이러한 부작용을 최대한 피해야 합니다. 즉, 순수 함수를 최대한 작성해야 합니다.

  1. 고차 함수

고차 함수는 하나 이상의 함수를 매개변수로 받거나 함수를 반환 값으로 반환하는 함수입니다. 이러한 종류의 기능을 사용하면 요구 사항을 보다 유연하게 실현하고 코드 중복을 줄일 수 있습니다. 다음 함수는 함수를 매개변수로 받아들이고 새 함수를 반환할 수 있는 고차 함수의 예입니다.

function compose(fn1, fn2) {
  return function(value) {
    return fn1(fn2(value));
  };
}

이 함수는 새 함수를 반환합니다. 이 함수는 먼저 fn2를 호출한 다음 결과를 다음과 같이 fn1에 전달합니다. 매개변수. 아래와 같이 이 함수를 사용하여 여러 함수를 결합할 수 있습니다.

function add10(val) {
  return val + 10;
}

function square(val) {
  return val * val;
}

var result = compose(add10, square)(5);
console.log(result); // 35 (5 + 10) * (5 + 10)

이 예에서는 compose 함수에 10과 square를 추가합니다. 이 함수는 이 새 함수에 값 5를 전달합니다. 마침내 우리가 기대했던 결과가 반환되었습니다.

  1. 커링

커링은 함수를 한 번에 하나의 인수만 허용하는 형식으로 변환하는 기술입니다. 다중 매개변수 함수의 값을 단일 매개변수 함수 체인으로 변환하는 것도 함수를 보다 유연하게 사용할 수 있도록 일종의 함수 "전처리"라고 할 수 있습니다. 다음 함수는 여러 값의 합을 구현할 수 있습니다.

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

add(1, 2, 3); // 6

그리고 이 함수는 currying을 통해 단계별로 구현할 수 있습니다.

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

add(1)(2)(3); // 6

보시다시피, currying을 통해 add 함수는 먼저 첫 번째 매개변수를 받고 함수를 반환합니다. 두 번째 인수를 받습니다. 이제 매개변수를 하나씩 전달하여 최종적으로 함수가 반환될 때까지 매번 새 함수를 반환할 수 있습니다.

  1. 함수 합성

함수 합성은 두 개 이상의 함수를 결합하여 새로운 함수를 생성하는 것입니다. 이 새로운 함수는 들어오는 함수를 왼쪽에서 오른쪽으로 호출한 다음 그 결과를 결합합니다. 함수형 프로그래밍에서 함수 합성은 작은 함수를 큰 함수로 결합하는 가장 효과적인 방법입니다. compose 기능을 사용하여 여러 기능을 결합할 수 있습니다. 다음은 함수 합성의 예입니다.

function add(a) {
  return a + 10;
}

function multiply(b) {
  return b * 2;
}

const addingAndMultiplying = compose(multiply, add);

addingAndMultiplying (10); // 40                                                        

이 예에서는 먼저 두 개의 간단한 함수인 add와 Multiply를 정의한 다음 합성 함수 compose를 사용하여 이를 새로운 함수로 결합합니다. 이 새로운 함수는 여러 함수를 동시에 호출하고 그 결과를 함께 결합할 수 있습니다. addAndMultiplying 함수에 10을 전달하면 먼저 add 함수를 호출하여 10에 10을 더해 20을 제공합니다. 다음으로 결과를 곱셈 함수에 전달합니다. 이 함수는 20을 2로 곱하여 최종 결과인 40을 제공합니다.

  1. 함수 커링과 합성의 결합

함수 커링과 합성의 결합은 함수형 프로그래밍에서 자주 사용됩니다. 예를 들어, 일부 함수를 정의하고 합성하여 일부 작업을 완료할 수 있습니다.

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

function multiply(a) {
  return function(b) {
    return a * b;
  };
}

function subtract(a) {
  return function(b) {
    return b - a;
  };
}

function divide(a) {
  return function(b) {
    return b / a;
  };
}

const discount = compose(subtract(10), multiply(0.1), add(20), divide(2));

discount(50); // 5

이 예에서는 먼저 네 가지 간단한 함수 더하기, 곱하기, 빼기 및 나누기를 정의하고 함수 currying을 사용하여 변환합니다. 함수 결합기 작성을 사용하면 모든 작업을 연결하고 최종 결과를 얻을 수 있습니다. 이 예제에서는 카레링과 합성을 사용하여 여러 개의 간단한 함수를 단일 함수로 결합하는 방법을 보여줍니다.

결론

이 글에서는 순수 함수, 고차 함수, 커링, 함수 합성, 커리 함수 합성 등 JavaScript로 함수형 프로그래밍을 구현하기 위한 몇 가지 고급 애플리케이션을 소개했습니다. 이러한 개념은 함수의 순수성과 불변성과 같은 함수형 프로그래밍의 몇 가지 핵심 아이디어를 기반으로 합니다. 이러한 기술은 보다 유연하고 재사용 가능하며 쉽게 테스트할 수 있는 코드를 작성하는 데 도움이 될 수 있습니다. 함수형 프로그래밍에 대해 더 자세히 알아보고 싶다면 다양한 함수형 프로그래밍 도구를 제공하는 라이브러리인 Ramda.js에 대한 설명서를 확인하세요.

위 내용은 JavaScript의 함수형 프로그래밍의 고급 응용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.