고차함수는 함수를 인자로 받을 수 있고, 함수의 형태로 리턴할 수 있는 함수
이때 다른 함수(caller)의 인자로 전달되는 함수를 콜백 함수(callback function)이라고 한다
커리 함수(Haskell Curry의 이름을 딴), 함수를 리턴하는 함수
배열 메소드 중 일부가 고차함수에 해당
.filter() 메소드는 함수를 인자로 전달받아 그 결과 배열을 리턴한다
.map() 메소드는 하나의 데이터를 다른 데이터로 맵핑할 때 사용
.reduce() 메소드는 초기값을 기반으로 배열의 요소를 순환하게 되고, 초기값이 없다면 배열의 첫번째 요소가 초기값이 된다.
why 고차함수 ?
추상화는 복잡한 어떤 것을 압축해서 핵심만 추출한 상태로 만드는 것
주소창에 주소를 입력하면 그과정을 몰라도 결과를 얻을 수 있는 것도 추상화의 결과
추상화 = 생산성의 향상
자주 반복해서 사용하는 로직을 별도의 함수로 작성하는 것도 추상화의 좋은 사례
어떤 함수를 만들어 놓으면, 복잡한 로직을 신경쓰지 않아도 결과를 얻을 수 있다
함수 > 값을 전달받아 값을 리턴한다 > 값에 대한 로직은 숨겨져 있다 > 값 수준에서의 추상화
고차 함수는 이러한 추상화의 수준을 사고의 추상화 수준으로 끌어올린다
추상화의 수준이 높아지는 만큼 생산성도 비약적으로 상승한다!
firstclass citizen은 중요한 개념!
작성중