웹 프론트엔드 JS 튜토리얼 JavaScript의 함수형 프로그래밍의 고급 응용

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

Jun 15, 2023 pm 11:01 PM
javascript 함수형 프로그래밍 고급 애플리케이션

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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

함수형 프로그래밍에 C++ 람다 표현식을 사용하면 어떤 이점이 있나요? 함수형 프로그래밍에 C++ 람다 표현식을 사용하면 어떤 이점이 있나요? Apr 17, 2024 am 10:18 AM

C++ 람다 식은 다음을 포함하여 함수형 프로그래밍에 이점을 제공합니다. 단순성: 익명 인라인 함수는 코드 가독성을 향상시킵니다. 코드 재사용: 코드 재사용을 용이하게 하기 위해 람다 표현식을 전달하거나 저장할 수 있습니다. 캡슐화: 별도의 함수를 만들지 않고도 코드 조각을 캡슐화하는 방법을 제공합니다. 실제 사례: 목록에서 홀수를 필터링합니다. 목록의 요소 합계를 계산합니다. 람다 표현식은 함수형 프로그래밍의 단순성, 재사용성 및 캡슐화를 달성합니다.

지연 평가를 사용하여 Golang 기능 프로그램을 최적화하는 방법은 무엇입니까? 지연 평가를 사용하여 Golang 기능 프로그램을 최적화하는 방법은 무엇입니까? Apr 16, 2024 am 09:33 AM

게으른 평가는 게으른 데이터 구조를 사용하여 Go에서 구현할 수 있습니다. 즉, 실제 값을 캡슐화하고 필요할 때만 평가하는 래퍼 유형을 생성합니다. 실제로 필요할 때까지 중간 값 계산을 연기하여 기능적 프로그램에서 피보나치 수열 계산을 최적화합니다. 이는 불필요한 오버헤드를 제거하고 기능적 프로그램의 성능을 향상시킬 수 있습니다.

golang 함수형 프로그래밍의 일반적인 실수와 함정 golang 함수형 프로그래밍의 일반적인 실수와 함정 Apr 30, 2024 pm 12:36 PM

Go에서 함수형 프로그래밍을 사용할 때 주의해야 할 5가지 일반적인 실수와 함정이 있습니다. 실수로 참조를 수정하지 말고 새로 생성된 변수가 반환되는지 확인하세요. 동시성 문제를 해결하려면 동기화 메커니즘을 사용하거나 외부 변경 가능 상태 캡처를 피하세요. 코드 가독성과 유지 관리성을 향상하려면 부분 기능화를 아껴서 사용하세요. 애플리케이션의 견고성을 보장하기 위해 항상 함수의 오류를 처리하십시오. 인라인 함수, 평면화된 데이터 구조 및 작업 일괄 처리를 사용하여 성능에 미치는 영향을 고려하고 코드를 최적화하세요.

Python 람다 표현식: 축약형, 간결함, 강력함 Python 람다 표현식: 축약형, 간결함, 강력함 Feb 19, 2024 pm 08:10 PM

pythonLambda 표현식은 간결하고 읽기 쉽고 사용하기 쉬운 코드를 생성하기 위한 강력하고 유연한 도구입니다. 다른 함수에 인수로 전달되거나 변수에 저장될 수 있는 익명 함수를 빠르게 생성하는 데 유용합니다. Lambda 표현식의 기본 구문은 다음과 같습니다.lambdaarguments:expression예를 들어 다음 Lambda 표현식은 두 개의 숫자를 추가합니다.lambdax,y:x+y 이 Lambda 표현식은 다음과 같이 다른 함수에 인수로 전달될 수 있습니다. defsum( x ,y):returnx+yresult=sum(lambdax,y:x+y,1,2)이 예에서는

Python Lambda 표현식: 익명 함수의 힘 알아보기 Python Lambda 표현식: 익명 함수의 힘 알아보기 Feb 24, 2024 am 09:01 AM

Python의 람다 표현식은 익명 함수의 또 다른 구문 형태입니다. 프로그램 어디에서나 정의할 수 있는 작은 익명 함수입니다. 람다 식은 매개변수 목록과 유효한 Python 식일 수 있는 식으로 구성됩니다. Lambda 표현식의 구문은 다음과 같습니다:lambdaargument_list:expression.예를 들어 다음 Lambda 표현식은 두 숫자의 합계를 반환합니다:lambdax,y:x+y 이 Lambda 표현식은 맵과 같은 다른 함수에 전달될 수 있습니다. () 함수: 숫자=[ 1,2,3,4,5]결과=맵(람다

다른 함수형 프로그래밍 언어에 비해 Java 함수의 장점과 단점은 무엇입니까? 다른 함수형 프로그래밍 언어에 비해 Java 함수의 장점과 단점은 무엇입니까? Apr 24, 2024 pm 02:51 PM

Java 함수형 프로그래밍의 장점에는 단순성, 구성성, 동시성, 테스트 친화성 및 성능이 포함됩니다. 단점으로는 학습 곡선, 디버깅의 어려움, 제한된 유연성, 성능 오버헤드 등이 있습니다. 주요 기능에는 부작용이 없는 순수한 기능, 데이터 처리 파이프라인, 상태 비저장 코드 및 효율적인 스트리밍 API가 포함됩니다.

C++ 함수의 함수형 프로그래밍 속성은 무엇입니까? C++ 함수의 함수형 프로그래밍 속성은 무엇입니까? Apr 11, 2024 pm 06:12 PM

C++는 다음을 포함한 함수형 프로그래밍 기능을 지원합니다. 순수 함수: const 수정자를 사용하여 선언되며 입력을 수정하지 않거나 외부 상태에 의존하지 않습니다. 불변성: const 키워드를 사용하여 변수를 선언하면 해당 값을 수정할 수 없습니다. 지연 평가: std::lazy 함수를 사용하여 지연 값을 생성하고 표현식을 지연 평가합니다. 재귀(Recursion): 함수가 자신을 호출하기 위해 return을 사용하여 자신을 호출하는 함수형 프로그래밍 기술입니다.

함수형 프로그래밍이 모든 golang 프로젝트에 적합한가요? 함수형 프로그래밍이 모든 golang 프로젝트에 적합한가요? May 01, 2024 pm 07:12 PM

함수형 프로그래밍은 모든 Go 프로젝트에 적합하지 않습니다. 예측 가능성, 동시성 및 모듈성을 제공하지만 성능이 저하되고 코드 중복성이 증가하며 학습 곡선이 필요할 수 있습니다. 이러한 장점이 필요한 프로젝트에서는 FP가 유리하지만, 성능과 코드 단순성을 중시하는 프로젝트에서는 객체 기반 프로그래밍이 더 적합합니다.

See all articles