함수형 프로그래밍 기술을 사용하여 아름다운 JavaScript_ibm_javascript를 작성하기 위한 팁
함수형 프로그래밍은 프로그램을 구성하는 데 완전히 다른 방법을 사용하기 때문에 명령형 패러다임에 익숙한 프로그래머는 함수형 프로그래밍을 배우기가 다소 어려울 수 있습니다. 이 기사에서는 함수형 스타일을 사용하여 JavaScript로 훌륭하고 아름다운 코드를 작성하는 방법에 대한 몇 가지 예를 배우게 됩니다. 논의할 내용은 다음과 같습니다.
익명 함수, 함수를 호출하는 다양한 방법, 함수를 다른 함수에 인수로 전달하는 방법 등을 포함한 함수형 프로그래밍 개념.
기능적 개념 적용의 예는 다음과 같습니다: 확장된 배열 정렬, 동적 HTML 적용으로 생성된 아름다운 코드;
함수형 프로그래밍 개념
모두에게 알려주세요. 다음 주소로 제출해 주세요:
Digg
Slashdot
"어떻게"를 설명하여 문제에 대한 해결책을 지정하는 언어 , 많은 개발자가 코딩 방법을 알고 있습니다. 예를 들어 계승을 계산하는 함수를 작성하려면 프로그램을 설명하는 루프를 작성하거나 재귀를 사용하여 모든 숫자의 곱을 찾을 수 있습니다. 두 경우 모두 계산 프로세스가 프로그램에 자세히 설명되어 있습니다. 목록 1은 계승 계산에 사용할 수 있는 C 코드를 보여줍니다.
목록 1. 절차적 스타일 계승
int 계승 (int n)
{
if (n return 1; else
return n * 계승 (n-1);
}
이 유형의 언어는 문제 해결 프로세스를 정의하므로 절차적 프로그래밍 언어라고도 합니다. 함수형 프로그래밍은 이 원칙과 크게 다릅니다. 함수형 프로그래밍에서는 문제가 "무엇"인지 설명해야 합니다.함수형 프로그래밍 언어는 선언적 언어라고도 합니다. 계승값을 계산하는 동일한 프로그램은 n까지의 모든 숫자의 곱으로 작성될 수 있습니다. 계승 계산을 위한 일반적인 기능적 프로그램은 목록 2의 예와 같습니다.
목록 2. 기능적 스타일 계승
factorial n, 여기서 n factorial n :=foldr * 1 take n [1.. ]
두 번째 문은 1부터 시작하는 처음 n개 숫자의 목록을 가져온 다음(n [1..] 사용) 해당 제품을 찾도록 지정합니다. 1은 기본 위안입니다. 이 정의는 루프나 재귀가 없다는 점에서 이전 예제와 다릅니다. 이는 계승 함수의 산술적 정의와 같습니다. 라이브러리 함수(take 및foldr)와 표기법(목록 표기법 [ ])의 의미를 이해하면 코드 작성이 쉽고 읽기 쉽습니다.
단 세 줄의 미란다 코드만으로 너비 우선 또는 깊이 우선 순회를 사용하여 매개변수에 따라 n항 트리의 각 노드를 처리하는 루틴을 작성할 수 있으며 요소는 다음과 같습니다. 어떤 일반적인 유형이든.
역사적으로 함수형 프로그래밍 언어는 여러 가지 이유로 인기가 떨어졌습니다. 그러나 최근에는 일부 기능적 프로그래밍 언어가 컴퓨터 산업에 진출하고 있습니다. 한 가지 예는 .NET 플랫폼의 Haskell입니다. 다른 경우에는 기존 언어가 함수형 프로그래밍 언어의 개념을 차용합니다. 일부 C 구현의 반복자와 연속은 물론 JavaScript에서 제공되는 일부 기능적 구성도 이러한 차용의 예입니다. 그러나 기능적 구조를 빌려도 전체 언어 프로그래밍 패러다임은 변하지 않습니다. JavaScript는 함수형 구조가 추가되었다고 해서 함수형 프로그래밍 언어가 된 것은 아닙니다.
이제 JavaScript 함수 구조의 다양한 아름다움과 일상적인 코딩 및 작업에서 이를 사용하는 방법에 대해 논의하겠습니다. 몇 가지 기본 기능부터 시작한 다음 이를 포함하는 몇 가지 흥미로운 애플리케이션을 살펴보겠습니다.
익명 함수
자바스크립트에서는 익명 함수나 이름 없이 함수를 작성할 수 있습니다. 왜 그런 기능이 필요한가요? 계속 읽어보세요. 먼저 그러한 함수를 작성하는 방법을 배우겠습니다. 다음 JavaScript 함수가 있는 경우:
목록 3. 일반적인 함수
function sum(x,y,z) {
return (x y z)}
그러면 해당 익명 함수는 다음과 같아야 합니다.
목록 4. 익명 함수
function(x,y,z) {
return (x y z) ;
}
이를 사용하려면 다음 코드를 작성해야 합니다.
목록 5. 익명 함수 적용
var sum = function(x,y,z) {
return (x y z)
}(1,2,3)
alert(sum); >
함수를 값으로 사용
함수를 값으로 사용할 수도 있습니다. 할당된 값이 함수인 변수를 가질 수도 있습니다. 마지막 예에서는 다음을 수행할 수도 있습니다.
목록 6. 함수 할당 사용
var sum = function(x,y,z) {
return (x y z); }
alert(sum(1,2,3));
위 목록 6의 예에서 변수 sum에 할당된 값은 함수 정의입니다. 그 자체. 이런 식으로 sum은 함수가 되어 어디에서나 호출할 수 있습니다.
함수를 호출하는 다양한 방법
JavaScript에서는 목록 7과 8에 표시된 것처럼 함수를 호출하는 두 가지 방법을 허용합니다.
목록 7. 일반적인 함수 적용
alert ("Hello, World!")
또는
목록 8. 함수를 표현식으로 사용
(alert) ("Hello, World!")
따라서 다음 코드를 작성할 수도 있습니다.
목록 9. 함수 정의 후 바로 사용 가능
( function(x,y,z) { return (x y z) } ) (1, 2, 3) ;
괄호 안에 함수 표현식을 작성한 다음 이를 매개변수에 전달하여 매개변수에 대한 연산을 수행할 수 있습니다. Listing 8의 예제에는 함수 이름이 괄호 안에 직접 포함되어 있지만 Listing 9와 같이 사용할 때는 그렇지 않습니다.
함수를 다른 함수에 인수로 전달
함수를 다른 함수에 인수로 전달할 수도 있습니다. 이는 새로운 개념은 아니지만 다음 예에서는 광범위하게 사용됩니다. 목록 10에 표시된 대로 함수 인수를 전달할 수 있습니다.
목록 10. 함수를 매개변수로 전달하고 함수 적용
var passFunAndApply = function (fn,x,y,z) { return fn(x,y,z ); };
var sum = function(x,y,z) {
return x y z
}
alert( passFunAndApply(sum,3,4,5) ) ); // 12
마지막 경고 문을 실행하면 크기 12의 값이 출력됩니다.
함수 개념 사용
이전 섹션에서는 함수 스타일을 사용하는 몇 가지 프로그래밍 개념을 소개했습니다. 제시된 예는 모든 것을 포괄하는 것도 아니고 중요한 순서대로 나열한 것도 아니며 단지 이 논의와 관련된 일부 예일 뿐입니다. 다음은 JavaScript의 기능적 스타일에 대한 간략한 요약입니다.
함수에 항상 이름이 필요한 것은 아닙니다.
다른 값과 마찬가지로 변수에 함수를 할당할 수 있습니다.
함수 표현식을 작성하고 나중에 적용할 수 있도록 괄호 안에 넣을 수 있습니다.
함수는 다른 함수에 매개변수로 전달될 수 있습니다.
이 섹션에서는 아름다운 JavaScript 코드를 작성하기 위해 이러한 개념을 효과적으로 사용하는 몇 가지 예를 소개합니다. (JavaScript의 함수형 스타일을 사용하면 이 논의 범위를 넘어서는 많은 일을 할 수 있습니다.)
확장 배열 정렬
먼저 배열 요소의 날짜에 따라 데이터를 정렬할 수 있는 정렬 방법을 작성해 보겠습니다. . 이 메소드를 JavaScript로 작성하는 것은 매우 간단합니다. 데이터 객체의 정렬 방법은 비교 함수인 선택적 매개변수를 허용합니다. 여기서는 목록 11의 비교 함수를 사용해야 합니다.
목록 11. 비교 함수
function (x,y) {
return x.date – y.date
}
필요한 기능을 얻으려면 목록 12의 예제를 사용하세요.
목록 12. 정렬 함수의 확장
arr.sort( function (x,y) { return x.date – y.date; })
여기서 arr은 유형 배열 객체입니다. sort 함수는 날짜를 기준으로 arr 배열의 모든 객체를 정렬합니다. 비교 함수는 정렬 작업을 완료하기 위해 해당 정의와 함께 정렬 함수에 전달됩니다. 이 함수를 사용하세요.
모든 JavaScript 객체에는 날짜 속성이 있습니다.
JavaScript의 배열형 정렬 기능은 선택적 매개변수를 허용하며, 선택적 매개변수는 정렬에 사용되는 비교 함수입니다. 이는 C 라이브러리의 qsort 함수와 유사합니다.
HTML을 동적으로 생성하는 아름다운 코드
이 예에서는 배열에서 HTML을 동적으로 생성하는 아름다운 코드를 작성하는 방법을 보여줍니다. 데이터에서 얻은 값을 기반으로 테이블을 생성할 수 있습니다. 또는 배열의 내용을 사용하여 정렬된 목록과 정렬되지 않은 목록을 생성할 수 있습니다. 수직 또는 수평 메뉴 항목도 생성할 수 있습니다.
목록 13의 코드 스타일은 일반적으로 배열에서 동적 HTML을 생성하는 데 사용됩니다.
목록 13. 동적 HTML을 생성하는 일반 코드
var str=' '
for (var i=0;i
str =... HTML 생성 코드...
}
document.write(str)
이 코드를 목록 14의 코드로 바꿀 수 있습니다.
목록 14. 동적 HTML을 생성하는 일반적인 방법
Array.prototype.fold=function(templateFn) {
var len=this.length
var str; =' ';
for (var i=0; i
return str; templateInstance(element) {
return ... HTML 생성 코드 ...
}
document.write(arr.fold(templateInstance))
새로운 함수 접기를 정의하기 위해 Array 유형의 프로토타입 속성을 사용합니다. 이제 이 함수는 나중에 정의된 모든 배열에서 사용할 수 있습니다.
일련의 함수 적용
다음 상황을 고려해보세요. 일련의 함수를 콜백 함수로 사용하고 싶습니다. 이를 달성하기 위해 두 개의 매개변수를 사용하는 window.setTimeout 함수가 사용됩니다. 첫 번째 매개변수는 두 번째 매개변수에 표시된 밀리초 이후에 호출되는 함수입니다. 목록 15에서는 이를 수행하는 한 가지 방법을 보여줍니다.
목록 15. 콜백에서 함수 세트 호출
window.setTimeout(function(){alert('First!');alert('Second!');}, 5000); >
목록 16은 이를 수행하는 더 좋은 방법을 보여줍니다.
목록 16. 일련의 함수를 호출하는 더 좋은 방법
Function.prototype.sequence=function(g) {
var f=this
return; function () {
f();g();
}
}
function AlertFrst() { Alert('첫 번째!') }
function AlertSec(); ( 'Second!'); }
setTimeout(alertFrst.sequence(alertSec), 5000);
이벤트를 호출한 후 다른 콜백을 호출하려는 경우 목록 16의 코드를 사용하여 콜백을 확장할 수도 있습니다. 이제 관심이 높아졌으므로 이는 스스로 완료할 수 있는 연습이 될 수 있습니다.
맨 위로
결론
당신은 여러 분야에서 JavaScript의 함수형 프로그래밍을 사용하여 일상 활동을 아름다운 방식으로 완료할 수 있습니다. 이 문서의 예제에서는 몇 가지 시나리오를 보여줍니다. 함수형 프로그래밍에 대한 올바른 컨텍스트를 찾고 개념을 적용하면 더 많은 이해를 얻고 우아함을 높일 수 있습니다.
에서 더보기

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

JavaScript에서 HTTP 상태 코드를 얻는 방법 소개: 프런트 엔드 개발에서 우리는 종종 백엔드 인터페이스와의 상호 작용을 처리해야 하며 HTTP 상태 코드는 매우 중요한 부분입니다. HTTP 상태 코드를 이해하고 얻는 것은 인터페이스에서 반환된 데이터를 더 잘 처리하는 데 도움이 됩니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. HTTP 상태 코드란 무엇입니까? HTTP 상태 코드는 브라우저가 서버에 요청을 시작할 때 서비스가

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

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

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

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

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

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