Higher order function

wonyoung·2024년 3월 28일

Javascript

목록 보기
26/36

고차 함수(higher-order function)는 다른 함수를 인자로 받거나 함수를 결과로 반환하는 함수를 말합니다. 이러한 함수들은 추상화 수준을 높여 주어 더 유연하고 재사용 가능한 코드를 작성할 수 있도록 도와줍니다. 고차 함수는 함수형 프로그래밍 언어에서 매우 중요한 개념입니다.

고차 함수의 주요 특징:

  • 함수를 인자로 받음: 고차 함수는 하나 이상의 함수를 인자로 받을 수 있습니다. 이를 통해 로직을 동적으로 변경할 수 있어 유연성이 높아집니다.
  • 함수를 반환함: 고차 함수는 실행 결과로 새로운 함수를 반환할 수 있습니다. 이를 통해 클로저를 활용하거나, 나중에 실행할 수 있는 함수를 생성할 수 있습니다.

고차 함수의 예시:

  1. map 함수: 배열의 각 요소에 주어진 함수를 적용하고, 결과로 새 배열을 생성합니다.
    • 예: map([1, 2, 3], x => x * 2)는 [2, 4, 6]을 반환합니다.
  2. filter 함수: 주어진 함수의 조건을 만족하는 모든 요소로 새 배열을 생성합니다.
    • 예: filter([1, 2, 3, 4], x => x % 2 === 0)는 [2, 4]를 반환합니다.
  3. reduce 함수: 배열의 각 요소를 순회하며 단일 값(누적 결과)을 생성합니다.
    • 예: reduce([1, 2, 3, 4], (acc, x) => acc + x, 0)는 10을 반환합니다.

고차 함수의 장점:

  • 재사용성: 고차 함수를 사용하면 코드를 더 잘 재사용할 수 있습니다. 비슷한 패턴의 코드를 여러 번 작성할 필요가 없어집니다.
  • 추상화: 복잡한 작업을 더 간단하게 만들어 주며, 코드의 추상화 수준을 높여 줍니다.
  • 유연성: 함수를 인자로 넘기거나 반환함으로써, 더 동적이고 유연한 코드 작성이 가능해집니다.
    고차 함수는 함수형 프로그래밍의 핵심적인 요소이며, JavaScript, Python 등 많은 현대 프로그래밍 언어에서 지원됩니다.

고차 함수(higher-order function)에서 괄호 ()는 함수(function)를 호출하는 용도로 사용됩니다. 함수를 인자로 받거나 함수를 반환할 때, 함수 이름 뒤에 붙는 괄호가 바로 그 함수를 실행하라는 의미입니다.

  • 함수를 인자로 받을 때: 고차 함수는 다른 함수를 인자로 받아 그 함수를 내부에서 호출할 수 있습니다. 이 때, 내부에서 해당 함수를 호출하기 위해 괄호를 사용합니다. 예를 들어, map 함수는 인자로 받은 함수를 배열의 각 요소에 적용할 때 괄호를 사용해 호출합니다.
  • 함수를 반환할 때: 고차 함수가 또 다른 함수를 반환할 경우, 반환된 함수를 나중에 호출하기 위해 괄호를 사용합니다. 반환된 함수를 실행하려면, 변수에 할당된 후 괄호를 사용해 호출할 수 있습니다.

예시

function createGreeter(greeting) {
    return function(name) {
        return greeting + ', ' + name + '!';
    };
}
// createGreeter는 고차 함수입니다. "Hello"를 인자로 넘겨 함수를 생성하고 그 함수를 반환합니다.
const greeter = createGreeter("Hello");
// 반환된 함수를 호출하기 위해 괄호를 사용합니다. 이 때, "World"가 name 파라미터로 넘어갑니다.
console.log(greeter("World")); // 출력: Hello, World!

위의 예에서 createGreeter 함수는 고차 함수입니다. createGreeter 함수는 인자로 문자열을 받고, 그 문자열을 사용해 새로운 함수를 반환합니다. 반환된 함수는 name을 인자로 받고, 인사말을 구성해 반환합니다. 이 때, 반환된 함수를 호출하기 위해 괄호 ()를 사용합니다.

profile
😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀

0개의 댓글