CodeGym /행동 /Frontend SELF KO /고차 함수

고차 함수

Frontend SELF KO
레벨 37 , 레슨 4
사용 가능

5.1 기본 개념

고차 함수는 함수형 프로그래밍의 중요한 측면이며 JavaScript에서 널리 사용돼. 덕분에 코드를 추상적으로, 간결하고 재사용 가능하게 작성할 수 있어.

고차 함수란?

고차 함수 (higher-order functions)란 다른 함수를 인자로 받아들이거나 결과로 함수를 반환하는 함수야. 함수를 1급 객체로 다룰 수 있게 해줘서 더 추상적이고 모듈화된 프로그램을 만들 수 있어.

고차 함수의 예시

  1. 함수를 인자로 전달하기.
  2. 다른 함수에서 함수를 반환하기.

5.2 함수를 인자로 전달하기

내장 배열 메서드 사용하기

JavaScript는 forEach(), map(), filter(), reduce() 같은 고차 함수인 배열 메서드를 많이 제공해.

1. forEach() 메서드

forEach() 메서드는 배열의 각 요소에 대해 지정된 함수를 한 번씩 실행해.

JavaScript
    
      const numbers = [1, 2, 3, 4, 5];

      numbers.forEach(function(number) {
        console.log(number);
      });
      // 출력: 1 2 3 4 5
    
  

2. map() 메서드

map() 메서드는 배열의 각 요소에 대해 지정된 함수를 호출한 결과로 새로운 배열을 만들어.

JavaScript
    
      const numbers = [1, 2, 3, 4, 5];
      const squaredNumbers = numbers.map(function(number) {
        return number * number;
      });

      console.log(squaredNumbers);
      // 출력: [1, 4, 9, 16, 25]
    
  

3. filter() 메서드

filter() 메서드는 전달된 함수의 검사를 통과하는 모든 요소로 새로운 배열을 만들어.

JavaScript
    
      const numbers = [1, 2, 3, 4, 5];
      const evenNumbers = numbers.filter(function(number) {
        return number % 2 === 0;
      });

      console.log(evenNumbers);
      // 출력: [2, 4]
    
  

4. reduce() 메서드

reduce() 메서드는 왼쪽에서 오른쪽으로 배열의 각 요소와 누산기에 함수를 적용해 하나의 값으로 줄여줘.

JavaScript
    
      const numbers = [1, 2, 3, 4, 5];
      const sum = numbers.reduce(function(total, number) {
        return total + number;
      }, 0);

      console.log(sum);
      // 출력: 15
    
  

5.3 다른 함수에서 함수를 반환하기

고차 함수는 다른 함수를 반환할 수 있어, 덕분에 더 유연하고 설정 가능한 함수를 만들 수 있어.

1. 커링 (Currying)

커링은 여러 인자를 받는 함수를 하나의 인자를 받고, 다음 인자를 받는 새 함수를 반환하는 형식으로 변환하는 과정이야.

커링 예시:

JavaScript
    
      function multiply(a) {
        return function(b) {
          return a * b;
        };
      }

      const multiplyByTwo = multiply(2);
      console.log(multiplyByTwo(5)); // 출력: 10

      const multiplyByThree = multiply(3);
      console.log(multiplyByThree(5)); // 출력: 15
    
  

2. 사용자 지정 함수 생성

고차 함수는 인자를 통해 설정할 수 있는 함수를 생성할 수 있어.

예시:

JavaScript
    
      function createGreeting(greeting) {
        return function(name) {
          console.log(`${greeting}, ${name}!`);
        };
      }

      const sayHello = createGreeting('Hello');
      sayHello('Alice'); // 출력: Hello, Alice!

      const sayHi = createGreeting('Hi');
      sayHi('Bob'); // 출력: Hi, Bob!
    
  

5.4 실용적인 활용

고차 함수의 실용적인 활용을 살펴보자.

compose() 함수

compose() 함수는 여러 함수를 하나로 결합하여 체인 방식으로 적용할 수 있게 해줘:

JavaScript
    
      function compose(...functions) {
        return function(initialValue) {
          return functions.reduceRight((value, func) => func(value), initialValue);
        };
      }

      const addOne = x => x + 1;
      const double = x => x * 2;
      const addOneAndDouble = compose(double, addOne);
      console.log(addOneAndDouble(5)); // 출력: 12 (처음에 5에 1을 더하고 결과를 두 배로 만듦)
    
  

비동기 고차 함수

비동기 고차 함수는 API 요청이나 타이머 작업 같은 비동기 작업을 처리할 수 있게 해줘:

JavaScript
    
      function fetchData(callback) {
        setTimeout(() => {
          callback('Data received');
        }, 1000);
      }

      function processData(data) {
        console.log(data);
      }

      fetchData(processData);
      // 출력: Data received (1초 후)
    
  
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION