Programming/Java Script

[JS] 고차함수 : 커링함수

감귤밭호지차 2023. 3. 14. 17:24

 * *  작성 중인 글입니다.  * *


고차 함수(higher order function)은 함수를 전달인자(argument)로 받을 수 있고, 함수를 리턴할 수 있는 함수.

# 빅보스

JS에서 함수는 1급 객체 함수. 

 

콜백함수(callback fuction)는 다른 함수의 전달인자로 전달되는 함수

#제물

어떤 작업이 완료되었을 때 호출하는 경우가 많아서 답신 전화를 뜻하는 콜백함수라는 이름이 붙음.

* 콜백함수를 전달받은 고차 함수는 함수 내부에서 이 콜백 함수를 호출(invoke)할 수 있고, 조건에 따라 콜백 함수의 실행 여부를 결정 할 수도 있습니다. 아예 호출하지 않을 수도 있고, 여러 번 실행 할 수도 있다. 

 

특정 작업의 완료 후에 호출하는 경우는 이후에 충분히 접할 수 있음. 

* 함수를 리턴하는 함수 : 커링 함수 (논리학자 하스켈 커리)

* 함수를 전달인자로 받는 함수에만 한정해서 사용.

함수를 리턴하는 함수와 함수를 전달인자로 받는 함수 모두 고차 함수. 

 

 


내장 고차함수 

JS는 기본적으로 내장된 고차 함수가 있음. 

배열 메서드들 중 일부가 대ㅠㅛ적인 고차함수에 해당 

 

# filter

모든 배열 의 요소 중에서 특정 조건을 만족하는 요소를 걸러내는 메서드 

 
  let arr = [1, 2, 3, 4];
  let output = arr.filter(/*필터링 하고 싶은 조건*/);
 

기준이 되는 특정 조건은 filter 메서드의 전달인자로 전달. 

조건은 함수의 형태로 전달 됩니다. 그래서 함수를 전달 인자로 받기 때문에 고차함수인 것. 

 

filter 활용 예지 : 조건에서 true를 리턴하는 요소들만 모은 새로운 배열을 리턴 

1. 배열의 각 요소가

2. 특정 논리(함수)에 따르면, 사실(true)일 때, 

3. 따로 분류합니다.(filter)

 

map 활용 예시

배열의 각 요소에 콜백 함수를 적용시킨 요소를 가진 새로운 배열을 리턴

1. 배열의 각 요소가 

2. 특정 논리(함수)에 의해

3. 다른 요소로 지정(map) 됩니다.

 

각 요소들에 접근을 해서 다른 데이터로 매핑(mapping)할 때 사용. 

 

reduce 활용 예시 

acc : 응축된 값 (콜백함수의)

cur : 현재 배열 요소 

배열의 각 요소를 콜백 함수에 맞게 하나로 응축 시킨 값을 리턴 초기값을 설정하지 않으면 배열의 첫 번째 요소가 acc 임. 

1. 배열의 각 요소를 

2. 특정 방법(함수)에 따라 

3. 원하는 하나의 형태로 

4. 응축합니다.(reduce))

 

- 배열을 문자열로 만들 때도 사용. 

-배열을 객체로 만들 때도 사용 

 

 

코플릿 

6번 14번 

 

 

#추상화

함수를 통해 얻은 추상화를 한 단계 더 높인 것이 고차 함수. 

값(배열)을 전달 받아 이 값을 가지고 복잡한 작업을 수행. : 값 수준의 추상화 

 

코플릿 20번 map과 filter의 차이 ??  // 28 번 

21번 27번 acc, cur 구분 [ 답은 나보다 훨 쉬웠음 ] 

 

30번 살짝 도움 받음 

 

JS는 일급 객체이기 때문에 다른 함수의 결과로서 리턴이 가능 합니다. 

다 : 고차 함수로 사용할 수 있음 

 

 

메서드 : 객체 안에 들어가 있는 함수 

객체에 속성으로 들어가 있는 함수