JavaScript의 고차 함수는 다른 함수를 인수 또는 리턴 함수로 결과로 취할 수있는 함수입니다. 이 개념은 기능 프로그래밍의 초석이며 일류 기능 언어로서의 본질로 인해 JavaScript에서 지원됩니다. 고차 기능을 통해 개발자는 재사용 가능한 기능 내에서 공통 패턴과 동작을 캡슐화하여보다 추상적이고 간결하며 재사용 가능한 코드를 작성할 수 있습니다.
예를 들어, 인수로 기능을 취하는 고차 기능의 간단한 예를 고려하십시오.
<code class="javascript">function applyOperation(operation, num1, num2) { return operation(num1, num2); } let add = function(a, b) { return ab; }; let multiply = function(a, b) { return a * b; }; console.log(applyOperation(add, 5, 3)); // Output: 8 console.log(applyOperation(multiply, 5, 3)); // Output: 15</code>
이 예에서는 applyOperation
이 기능 ( operation
)을 인수로 사용하기 때문에 고차 기능입니다. 다른 기능 ( add
또는 multiply
)을 전달함으로써 기능의 구조를 다시 작성하지 않고도 숫자에 대해 다른 작업을 적용하여 코드 간접성 및 재사용 성을 향상시킬 수 있습니다.
JavaScript에는 코드 가독성을 향상시키는 데 널리 사용되는 몇 가지 내장 고차 기능이 있습니다. 가장 일반적인 것 중 일부는 다음과 같습니다.
map
, filter
및 reduce
와 같은 배열 메소드 :
map
제공된 함수를 사용하여 배열의 각 요소를 변환합니다.filter
제공된 기능으로 구현 된 테스트를 통과하는 요소가있는 새 배열을 만듭니다.reduce
어큐뮬레이터와 배열의 각 요소 (왼쪽에서 오른쪽으로)에 대한 함수를 단일 값으로 줄입니다.<code class="javascript">let numbers = [1, 2, 3, 4]; let doubledNumbers = numbers.map(x => x * 2); // [2, 4, 6, 8] let evenNumbers = numbers.filter(x => x % 2 === 0); // [2, 4] let sum = numbers.reduce((acc, curr) => acc curr, 0); // 10</code>
settimeout 및 setInterval :
이러한 기능은 인수로서 기능을 취하고 지정된 시간 지연 또는 지정된 간격으로 각각 실행합니다.
<code class="javascript">setTimeout(() => console.log("Hello after 1 second"), 1000); let intervalId = setInterval(() => console.log("This runs every 2 seconds"), 2000);</code>
기능 구성 :
여러 기능을 새로운 기능으로 결합하여 일반적으로 Lodash와 같은 라이브러리 또는 사용자 정의 구현에서 사용됩니다.
<code class="javascript">const compose = (f, g) => x => f(g(x)); const addOne = x => x 1; const square = x => x * x; const addOneThenSquare = compose(square, addOne); console.log(addOneThenSquare(2)); // Output: 9</code>
이 예제는 고차 기능이 복잡한 작업을보다 읽기 쉬운 코드 블록으로 변환 할 수있는 방법을 보여줍니다.
고차 기능은 여러 가지 방법으로 JavaScript 응용 프로그램의 모듈성 및 유지 관리를 향상시킵니다.
추상화 및 캡슐화 :
고차 기능을 통해 개발자는 공통 작업 또는 알고리즘을 추상화하여 코드베이스의 다른 부분의 복잡성을 줄일 수 있습니다. 예를 들어, 고차 기능을 사용하여 비동기 작업을 처리하면 콜백 로직을 캡슐화하여 주요 기능을 더 명확하고 유지 관리 할 수 있습니다.
<code class="javascript">function handleAsyncOperation(asyncFn, onSuccess, onError) { asyncFn().then(onSuccess).catch(onError); } handleAsyncOperation(fetchUserData, displayUserData, handleError);</code>
JavaScript에서 고차 기능의 성능을 최적화하는 것은 여러 기술을 통해 달성 될 수 있습니다.
추억 :
메모 화에는 비싼 함수 호출 결과를 캐싱하고 동일한 입력이 다시 발생할 때 캐시 된 결과를 반환하는 것이 포함됩니다. 이는 계산 집약적 인 고차 기능에서 특히 효과적 일 수 있습니다.
<code class="javascript">function memoize(fn) { const cache = new Map(); return function(...args) { const key = JSON.stringify(args); if (cache.has(key)) { return cache.get(key); } const result = fn.apply(this, args); cache.set(key, result); return result; }; } const memoizedFib = memoize(function(n) { if (n </code>
인라인 작업에 화살표 기능 사용 :
화살표 기능은 어휘 this
과 짧은 구문으로 인해 약간의 성능 향상을 제공하여 메모리 사용 및 구문 분석 시간을 줄일 수 있습니다.
<code class="javascript">const numbers = [1, 2, 3, 4, 5]; const squaredNumbers = numbers.map(n => n * n); // Faster than using function(n) { return n * n; }</code>
map
또는 filter
사용하는 경우 결과가 즉시 필요하지 않은 경우 불필요하게 새 배열을 생성하지 않도록 forEach
사용하는 것을 고려하십시오. 카레링 :
카레는 부분적으로 적용된 인수로 재사용 할 수있는 특수 기능을 만들어 고차 기능을 최적화하는 데 사용될 수 있습니다. 이로 인해 기능 인수의 수를 줄이고 코드 재사용을 개선하여 성능이 향상 될 수 있습니다.
<code class="javascript">function curry(fn) { return function curried(...args) { if (args.length >= fn.length) { return fn.apply(this, args); } else { return function(...args2) { return curried.apply(this, args.concat(args2)); }; } }; } function add(a, b) { return ab; } const curriedAdd = curry(add); const addFive = curriedAdd(5); console.log(addFive(3)); // Output: 8</code>
이러한 기술을 적용함으로써 개발자는 JavaScript 응용 프로그램에서 고차 기능의 성능을 크게 향상시킬 수 있습니다.
위 내용은 JavaScript의 고차 기능은 무엇이며 어떻게 간결하고 재사용 가능한 코드를 작성하는 데 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!