고차함수..!

김재현·2022년 11월 19일
0

유닛 진행!

목록 보기
10/18
post-thumbnail

유노 고차함수?

고차 함수는 이름만큼 어려운 함수이다.. 처음 마주한 날은 이게 머징..? 하고 머리가 멈춘 느낌이었다. 그래서 어떤 아이인지 보기만 하고 돌아섰다. 그리고 오늘, 고차함수와 만난 둘째날 조금 알것도 같다. 알고보니 뭐랄까 착하다.

일급객체를 먼저 알아야 한다.

일급객체는 말 처럼 일급이다. 특별 대우를 받는다.

  1. 변수에 할당(assignment) 할 수 있다.
  2. 다른 함수의 전달인자(argument)로 전달될 수 있다.
  3. 다른 함수의 결과로서 리턴될 수 있다.

이처럼 대우를 받기 때문에 활용이 다양하다.
함수를 변수에 할당할 수 있기 때문에 함수를 요소나 객체의 속성값으로 저장할 수 있다.
함수를 데이터처럼 다룰 수 있다.

고차함수란.

함수를 전달인자로 받을 수 있고 함수를 리턴할 수 있는 함수이다! 어떤건 함수를 전달인자로 전달하고 또 어떤건 함수 자체를 리턴한다. 둘은 동일하게 작동한다.

콜백함수

이름처럼 콜백 하는 함수이다. 다른 함수(caller)의 전달인자(argument)로 전달되는 함수를 콜백함수(callback function)이라 한다. 어떤 작업이 완료되었을때 호출된다.
콜백 함수를 전달받은 고차 함수(caller)는, 함수 내부에서 이 콜백 함수를 호출(invoke)할 수 있고, 조건에 따라 콜백 함수의 실행 여부를 결정할 수도 있다고 한다! 이게 뭔 말이지?

1. 다른 함수를 인자로 받는 경우

이런거다!
특징을 살펴보자

plusnum은 다른 함수를 인자로 받는 고차함수이다.
첫번쩨 인자 func에 함수가 들어올 경우는 func는 plusnum의 콜백 함수인것이다.
위의 예시의 아래쪽을 보면 plus는 plusnum의 콜백함수인 거시다!

2. 함수를 리턴하는 경우

특징을 살펴보자

함수 adder은 다른 함수를 리턴하는 고차함수다!
adder(5)는 함수이기에 () 를 사용할 수 있다!
const add3 = adder(3) 부분을 보면 adder가 리턴하는 함수를 변수에 저장할 수 있다는걸 알 수 있다.

3. 함수를 인자로 받고 함수를 리턴하는 경우


뭔가 복잡해 보이지만 코드를 천천히 보면 어떤 함수인지 알 수 있다.

doubleAdder의 인자 func는 함수 doubleAdder의 콜백 함수이다.
함수 double은 함수 doubleAdder의 콜백으로 전달되었다.
doubleAdder(5, double)는 함수다.

profile
티스토리로 이사갔습니다. => https://lobsterhyeon.tistory.com/

0개의 댓글