고차함수랑 함수를 인자로 받고, 함수를 리턴할 수 있는 함수를 말한다. 즉 함수 안에 함수가 있는 것이라고 할 수 있다.

다른 함수(caller)의 인자로 전달되는 함수를 콜백 함수(callback function)이라고 하며, 콜백 함수를 전달받는 고차함수는 해당 콜백함수를 호출(invoke)할 수 있다.

caller는 조건에 따라 콜백함수의 실행여부를 결정할 수 있다. 아예 호출하지 않거나, 여러번 실행할 수 있다.

함수를 리턴하는 함수는 ‘커리함수'라고 부르며, 커리함수는 고차함수에 포함된다.

Map은 모든 요소에게 동일한 행동을 준 값에 대하여 모두 반환한다. 행동은 함수로 본인이 직접 작성하여 인자로 넣는다. 기존배열을 수정하지 않고, 원하는 행동에 따라 결과가 달라진다.

Filter는 모든 요소 중 내가 원하는 값만 필터링하여 반환하는 내장함수이다. 행동은 함수로 본인이 직접 작성하여 인자로 넣는다. 기존배열을 수정하지 않고, 원하는 필터링에 따라 결과가 달라진다.

Reduce는 배열을 하나의 값으로 만들어 준다. 초기값을 정해주는데, 없다면 배열의 첫번째 값이 초깃값이 되고 두번째 값부터 순서대로 현재값이 되는데, 초기값과 현재값이 함수의 계산에 따라 누적값이 되고, 해당 누적값과 현재값이 지속적으로 함수에 의해 계산되어 최종 누적값이 결과로 리턴된다. 초기값을 설정해줄 경우에는 첫번째 값부터 현재값으로 계산이 진행된다.

스크린샷 2022-09-19 오후 3.04.44.png

위에서 주의할 점은

  1. function(d)에서 d는 결국 배열의 값 하나하나를 가르키므로 data의 요소 중 하나라고 알면 된다. 이해가 안되겠지만, filter, map, reduce의 코드가 그렇게 작성되어 있다고 생각하자!
  2. map함수에서 초깃값으로 0이 제시되었으며, 그러므로 첫번째 acc는 초깃값인 0이라고 생각하자!
  3. funcArgs[0] == getOnlyMales, funcArgs[1] == getOnlyAges, funcArgs[2] == getAverage 라는 점을 반드시 파악할 수 있어야 한다!!