이는 함수를 데이터(string, number, boolean, array, object)를 다루듯이 다룰 수 있다는 걸 의미한다.
변수에 저장할 수 있기 때문에 배열의 요소나 객체의 속성값으로 저장하는 것도 가능하다.
변수에 저장된 데이터는 함수의 인자로 전달되거나 함수 내에서 리턴값으로 사용될 수 있다. 함수 역시 다른 함수의 인자로 전달되거나 다른 함수 내에서 리턴될 수 있다는 것을 알 수 있다.
고차 함수(higher order function)는 다른 함수를 인자(argument)로 받거나 다른 함수를 리턴하는 함수를 말한다.
이 때 다른 함수(caller)의 인자(argument)로 전달되는 함수를 콜백 함수(callback function)라고 한다.
알기 쉽게 민철님이 고렙과 쪼렙으로 설명해주셨다 :)
고차 함수는 고렙, 콜백과 리턴하는 단순 함수 등은 쪼렙...이걸로 완벽 이해함^^
'함수를 리턴하는 함수'만을 일컫는 용어가 따로 존재하고 실제로도 많이 쓰이는데, 이런 함수를 이를 고안해 낸 논리학자 하스켈 커리의 이름을 따서 커리 함수라고 한다.
따로 커리 함수라는 용어를 사용하는 경우, 고차 함수란 용어를 '함수를 인자로 받는 함수'에만 한정지어서 사용하기도 한다. 하지만 엄밀한 의미에서 고차 함수는 커리 함수를 포함한다.
https://velog.io/@mnmm/js-pre-hof-2 에서 더 세 가지 조건을 세세하게 알 수 있다.