HOF. Higher Order Function.
제목에도 있지만, 이 포스트는 고차 함수에 대한 이야기이지, HOC에 대한 이야기가 아닙니다.
밥 먹듯이 써먹던 함수가, 그냥 함수가 아니라 '고차 함수' 라는 범위에 있다는 사실에
그래서 고차 함수가 뭔데?
라고 스스로 물었을 때, 대뜸 답변을 못하길래.. 포스트로 정리해둡니다.
우선, 함수에 함수를 전달할 수 있다는 사실은 공공연합니다.
function test(funcArg){ console.log(funcArg(1,2)) }
funcArg에 x와 y를 넣으면 x+y가 튀어나오는... 그런 함수라고 칩시다.
그러면 이 test라는 함수는 3을 뱉습니다.
어..? 근데 일단 이 친구, 함수를 인자로 받습니다.
아하, 그럼 얘도 고차함수입니다.
function test(x,y){ let count = 1; return function(){ count=count+x+y; return count; } } let test1 = test(1,2) test1() test1() test1()
클로져 형태로 작성된 위와 같은 함수가 있다고 가정합니다.
각각 무슨 값을 뱉는지, 에 대해서는 둘째치고. test()라는 함수는 익명 함수를 반환합니다.
오호라... 그러면 이 친구도 고차 함수의 범위에 포함됩니다.
참고 링크 : https://poiemaweb.com/js-array-higher-order-function
단순히 map, filter, reduce 정도만 생각했는데.. 겁나게 많다?
하긴.. 겁나게 많을 것 같습니다.
Array.sort()
Array.forEach((item,index)=>{})
Array.map((item,index)=>{})
Array.filter((item)=>return item>0)
Array.reduce((pre,cur)=>{},0)
Array.some((item)=>return item>10)
Array.every((item)=>return item>10)
Array.find((item)=>return item===2)
Array.findIndex((item)=>return item===2)
어쩌다보니 Array에 이런 함수가 있어요~~~ 하고 광고하는 것 같습니다.
어쨌든... 요약하면
고차 함수는 단순히 함수를 전달받든가... 반환하는 함수에 대해 일컫는 것이라고 정리할 수 있을 것 같습니다.