Javascript는 고차 기능(고급 응용 프로그램)_javascript 기술입니다.
일반적인 프로그래밍 언어에서 함수의 매개변수는 기본 유형 또는 객체 참조만 될 수 있으며, 반환 값은 기본 데이터 유형 또는 객체 참조만 될 수 있습니다. 그러나 Javascript에서 함수는 일급 시민이며 매개변수로 전달되거나 반환 값으로 반환될 수 있습니다. 소위 고차 함수(higher-order function)는 함수를 매개변수로 받거나 함수를 반환값으로 취할 수 있는 함수이다. 이 두 가지 상황에는 실제 개발에서 많은 응용 시나리오가 있습니다. 이 기사는 제가 직장과 연구에서 접한 몇 가지 응용 시나리오를 요약한 것입니다.
콜백 함수
코드 재사용은 애플리케이션을 측정하는 중요한 기준 중 하나입니다. 변경된 비즈니스 로직을 추출하여 콜백 함수에 캡슐화함으로써 코드 재사용률을 효과적으로 향상시킬 수 있습니다. 예를 들어, ES5의 배열에 추가된 forEach 메서드는 배열을 순회하고 각 요소에 대해 동일한 함수를 호출합니다.
array = {}; array.forEach = function(arr, fn){ for (var i = 0, len = arr.length; i < len; i++) { fn(arr[i], i, arr); } }
매번 순회 코드를 다시 작성할 필요 없이 콜백 함수에 비즈니스 초점을 맞춥니다.
일부 기능
함수를 반환값으로 출력하는 대표적인 응용으로 부분함수(partial function)가 있습니다. 소위 부분 함수란 다른 부분, 즉 매개변수나 변수가 미리 설정된 함수를 호출하는 함수를 생성하는 사용법을 말합니다. 어쨌든, 정의를 보면 이게 무슨 용도인지 이해가 안 되네요. 먼저 예제를 살펴보겠습니다. 부분 함수의 가장 일반적인 예는 유형 판단입니다.
Javascript 객체에는 프로토타입 속성, 클래스 속성, 확장성이라는 세 가지 속성이 있습니다. (모르는 학생들은 Rhino 책 138페이지를 다시 읽어보세요.) 클래스 속성은 문자열이며 Javascript에서는 직접 제공되지 않지만 Object.prototype.toString을 사용하여 간접적으로 얻을 수 있습니다. 이 함수는 항상 다음 형식을 반환합니다.
[객체 클래스]
이제 일련의 isType 함수를 작성할 수 있습니다.
코드는 다음과 같습니다.
isString = function(obj){ return Object.prototype.toString.call(obj) === "[object String]"; } isNumber = function(obj){ return Object.prototype.toString.call(obj) === "[object Number]"; } isArray = function(obj){ return Object.prototype.toString.call(obj) === "[object Array]"; }
이 함수의 대부분의 코드는 반복됩니다. 이때 고차 함수가 화려하게 데뷔합니다.
isType = function(type) { return function(obj) { return Object.prototype.toString.call(obj) === "[object " + type + "]"; } } isString = isType('String'); isNumber = isType('Number'); isArray = isType('Array');
그래서 일부 매개변수를 지정하여 새로운 맞춤형 함수를 반환하는 형태가 부분함수입니다.
카레
커링은 부분평가라고도 합니다. 커링 함수는 먼저 일부 매개변수를 승인한 후 즉시 평가하지 않지만 방금 전달된 매개변수는 함수에 의해 형성된 클로저에 저장됩니다. 함수가 실제로 평가될 때 전달된 모든 매개변수는 한 번에 평가에 사용됩니다.
var currying = function(fn) { var args = []; return function() { if (arguments.length === 0) { return fn.applay(this, args); } else { args = args.concat(arguments); return arguments.callee; } } }
한 달 동안의 일일 비용을 예로 들어 계산해 보겠습니다.
var currying = function(fn) { debugger; var args = []; return function() { if (arguments.length === 0) { return fn.apply(this, args); } else { Array.prototype.push.apply(args, arguments); return arguments.callee; } } } cost = function(){ var sum = 0; for (var i = 0, len = arguments.length; i < len; i++) { sum += arguments[i]; } return sum; } var cost = currying(cost); cost(100); cost(200); alert(cost())
이벤트 제한
일부 시나리오에서는 특정 이벤트가 반복적으로 실행될 수 있지만 이벤트 처리 기능을 매번 실행할 필요는 없습니다. 예를 들어, window.resize 이벤트에서 복잡한 논리 계산이 수행됩니다. 사용자가 브라우저 크기를 자주 변경하면 복잡한 계산이 성능에 심각한 영향을 미칠 수 있습니다. 때로는 rezise가 발생할 때마다 이러한 논리 계산을 트리거할 필요가 없습니다. 제한된 계산만 필요합니다. 현재로서는 기간에 따른 일부 이벤트 요청을 무시해야 합니다. 다음 제한 기능을 살펴보세요.
function throttle(fn, interval) { var doing = false; return function() { if (doing) { return; } doing = true; fn.apply(this, arguments); setTimeout(function() { doing = false; }, interval); } } window.onresize = throttle(function(){ console.log('execute'); }, 500);
함수 실행 시간을 제어하면 함수 실행 횟수와 기능 요구 사항 간의 완벽한 균형을 이룰 수 있습니다. 또 다른 이벤트는 mousemove입니다. 이 이벤트를 DOM 요소에 바인딩하면 마우스가 해당 요소 위로 이동할 때 이벤트가 반복적으로 트리거됩니다.
이벤트가 종료되었습니다
자주 발생하는 일부 이벤트의 경우 이벤트 종료 후 일련의 작업을 수행하고 싶을 때가 있습니다. 이때 고차 함수를 사용하여 다음 처리를 수행할 수 있습니다.
function debounce(fn, interval) { var timer = null; function delay() { var target = this; var args = arguments; return setTimeout(function(){ fn.apply(target, args); }, interval); } return function() { if (timer) { clearTimeout(timer); } timer = delay.apply(this, arguments); } }; window.onresize = throttle(function(){ console.log('resize end'); }, 500);
이 과정에서 이벤트가 발생하면 마지막 이벤트 핸들을 지우고 실행 시간을 다시 바인딩합니다.
참고:
《노드에 대한 자세한 설명》
"Javascript 디자인 패턴 및 개발 방식"

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











PHP는 널리 사용되는 서버 측 언어입니다. 많은 웹 개발자가 PHP를 사용하는 이유 중 하나는 풍부한 함수 라이브러리와 간단하고 사용하기 쉬운 함수 구문입니다. 함수형 프로그래밍은 데이터와 동작을 잘 캡슐화하여 코드를 더욱 모듈화하고 유지 관리 및 테스트하기 쉽게 만드는 프로그래밍 패러다임입니다. 이번 글에서는 함수형 프로그래밍에 PHP를 사용하는 방법을 소개하겠습니다. 함수형 프로그래밍 기초 함수형 프로그래밍의 핵심 아이디어는 함수 자체를 변수처럼 전달하고, 반환하고, 구성할 수 있는 일급 시민으로 취급하는 것입니다.

Python에서는 다른 함수를 인수로 사용하거나 함수를 출력으로 반환하는 함수를 고차 함수라고 합니다. 기능을 살펴보겠습니다. 함수는 변수에 저장될 수 있습니다. 이 함수는 다른 함수에 매개변수로 전달될 수 있습니다. 고차 함수는 목록, 해시 테이블 등의 형태로 저장될 수 있습니다. 함수는 함수에서 반환될 수 있습니다. 몇 가지 예를 살펴보겠습니다. 객체로서의 함수 예의 중국어 번역은 다음과 같습니다. 예 이 예에서 이러한 함수는 객체로 처리됩니다. 여기서는 데모() 함수가 변수에 할당됩니다. - #Creatingafunctiondefdemo(mystr):returnmystr.swapcase()#swappingthecase

고차 함수에는 map(), filter(), Reduce(), 람다 함수, 부분() 등이 포함됩니다. 자세한 소개: 1. map(): 이 내장 함수는 함수와 하나 이상의 반복 가능한 객체를 입력으로 받은 다음 반복 가능한 객체의 각 요소에 입력 함수를 적용하는 반복자를 반환합니다. 2. filter(): 이 내장 함수는 함수와 반복 가능한 객체를 입력으로 취하고, 입력 함수가 True 등을 반환하도록 하는 요소를 생성하는 반복자를 반환합니다.

PHP 화살표 함수: 고차 함수의 중첩된 호출을 처리하는 방법에는 특정 코드 예제가 필요합니다. 소개: PHP 버전 7.4에서는 화살표 함수(arrowfunctions) 개념이 도입되었으며 간결한 작성 방법이 가능합니다. 고차 함수에 대한 중첩 호출을 우아하게 처리합니다. 이 기사에서는 화살표 함수의 기본 사용법을 소개하고 특정 코드 예제를 통해 고차 함수의 중첩 호출을 처리하는 방법을 보여줍니다. 1. 화살표 기능이란 무엇입니까? 화살표 함수는 PHP7.4 버전에 도입된 새로운 기능입니다.

Python의 고차 함수 세계 소개 Python 프로그래밍 기술을 향상하고 보다 표현력 있고 효율적인 코드를 생성하려면 잘 찾아오셨습니다. Python의 함수는 특수한 코드 블록 그 이상입니다. 또한 이동, 전송, 심지어 동적으로 생성될 수도 있는 강력한 기능입니다. 고차 함수는 다른 함수를 처리하여 이러한 다양성을 향상시킵니다. 이 기사에서는 고차 함수의 원리를 광범위하게 논의합니다. 우리는 일류 객체로서 프로세스의 기본을 탐구하고, 고차 함수의 실제 사례를 살펴보고, 명확하고 아름다운 코드를 위한 람다 함수의 힘을 장려할 것입니다. 함수형 프로그래밍 모델과 Python에서 사용할 때의 이점도 논의됩니다. 이 기사를 읽고 나면 고차 기능을 확실히 이해하고 알게 될 것입니다.

Golang 언어의 인기와 발전으로 점점 더 많은 개발자가 함수형 프로그래밍 아이디어를 사용하기 시작했습니다. Golang의 고차 함수는 함수형 프로그래밍에 큰 편의성을 제공하며 실제 개발에 널리 사용됩니다. 그렇다면 Golang의 고차 함수 적용 시나리오는 무엇입니까? 다음으로 이를 분석해보겠습니다. 함수 매개변수와 반환값 처리 Golang에서는 함수를 다른 함수의 매개변수로 사용하거나 반환함수로 사용할 수 있다. 이는 함수를 다른 함수에 매개변수로 전달할 수 있음을 의미합니다.

PHP는 널리 사용되는 서버 측 언어입니다. 많은 웹 개발자가 PHP를 사용하는 이유 중 하나는 풍부한 함수 라이브러리와 간단하고 사용하기 쉬운 함수 구문입니다. 함수형 프로그래밍은 데이터와 동작을 잘 캡슐화하여 코드를 더욱 모듈화하고 유지 관리 및 테스트하기 쉽게 만드는 프로그래밍 패러다임입니다. 이번 글에서는 함수형 프로그래밍에 PHP를 사용하는 방법을 소개하겠습니다. 함수형 프로그래밍 기초 함수형 프로그래밍의 핵심 아이디어는 함수 자체를 변수처럼 전달하고, 반환하고, 구성할 수 있는 일급 시민으로 취급하는 것입니다.

Golang 고차 함수는 함수를 수락하고 반환합니다. 함수를 매개변수로 받는 것, 다른 함수를 처리하는 것, 동적 프로그램을 실행하는 것 등 두 가지 범주로 나뉩니다. 반환 값으로 함수 반환: 저장하고 나중에 실행할 수 있는 함수를 만들고 반환합니다.
