고차함수

fe_sw·2022년 12월 17일
0

Javascript

목록 보기
20/22

고차 함수

고차 함수는 함수를 인수로 전달받거나, 함수를 반환하는 함수를 말한다.

고차함수는 함수형 프로그래밍의 일종으로, 자바스크립트를 함수형 프로그래밍에 알맞은 언어로 만들어주는 특성이 바로 자바스크립트가 고차 함수이다.

이 고차함수를 이해하기 위해선 함수형 프로그래밍과 일급객체를 먼저 이해해야 한다.

함수형 프로그래밍

함수형 프로그래밍은 순수 함수와 보조 함수의 조합을 통해 조건문과 반복문을 제거하여 복잡성을 해결하고 변수의 사용을 억제하여 상태 변경과 부수효과를 피하려는 프로그래밍 패러다임이다.

부수효과

부수효과란 다음과 같은 변화 또는 변화가 발생하는 작업을 의미한다.

  • 변수의 값이 변경됨
  • 자료 구조를 제자리에서 수정함
  • 객체의 필드값을 설정함
  • 예외나 오류가 발생하며 실행이 중단됨
  • 콘솔 또는 파일 I/O가 발생함

순수 함수

부수 효들을 제거한 함수들을 순수 함수이라고 부르며, 함수형 프로그래밍에서 사용하는 함수는 이러한 순수 함수들이다.

  • Memory or I/O의 관점에서 Side Effect가 없는 함수
  • 함수의 실행이 외부에 영향을 끼치지 않는 함수

일급객체

일급 객체 란 객체들에 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.

아래와 같은 특성을 보이기 때문에 자바스크립트에서 함수를 일급객체로 취급한다.

1) 변수(variable)에 담을 수 있다.

// 변수에 함수 할당
var bar = fucntion() { return 'javscript'; };
console.log(bar()); // javascript

2) 다른 함수를 인자(argument)로 받는다.

var test = function(func) {
   func(); // 파라미터로 받은 함수 호출
}

// test() 함수에 다른 함수를 파라미터로 넣어 호출
test(function() {
   console.log('javascript');
});

인수,인자

  • 인자: 함수를 정의할 때 사용되는 변수를 인자(매개변수)
  • 인수: 실제로 함수가 호출할 때 넘기는 변수

3) 다른 함수의 결과로 리턴 될 수 있다.

// 함수를 리턴하는 test() 함수
function test() {
   return function() {
       console.log('javscript');
   }
}

var bar = test();
bar();

함수가 일급객체이기 때문에 할 수 있는 것은 무엇인가?

  • 고차함수(Higher order function)를 만들 수 있다.
  • 콜백(callback)을 사용할 수 있다.

결론

고차 함수는 함수를 인자로 받거나 또는 함수를 반환함으로써 작동 하는 함수를 말한다. 간단히 말하자면, 고차 함수는 함수를 인자로 받거나 함수를 반환하는(return) 함수를 말한다. (위의 일급객체 특징 2,3번 참고)

고차 함수들은 파라미터로 콜백 함수를 받아 사용되기 때문에, 원본 배열을 바탕으로 하는 새로운 결과값을 창조하는데 사용된다

결론은 고차 함수는 일반적인 함수인데 함수를 인자로 받고 함수를 반환할 수 있는 추가적인 기능을 가진 것이라고 이해하시면 된다.

ex) 고차함수: Array.prototype.map, Array.prototype.filter

0개의 댓글