[JS/Node] 고차함수

hosik kim·2021년 10월 6일
0

With CodeStates

목록 보기
37/45
post-thumbnail

💡고차함수


📌일급객체

  • JavaScript에는 특별하게 취급을 받는 일급 객체(first-class citizen)이 있다.
  • 대표적인 일급 객체 중 하나는 함수이며, 아래와 같이 특별하게 취급한다.
    1. 변수에 할당할 수 있음
    2. 다른 함수의 인자로 전달될 수 있음
    3. 다른 함수의 결과로서 리턴될 수 있음
  • 함수를 변수에 할당할 수 있기 때문에, 함수를 배열의 요소나 객체의 속성값으로 저장 가능
  • 즉, 함수를 테이터(string, number, boolean, array, object)를 다루듯 다룰 수 있다.

📌고차함수

  • 고차함수(higher order function)는 함수를 인자(argument)로 받을 수 있고, 함수의 형태로 리턴할 수 있는 함수
  • 다른 함수(caller)의 인자(argument)로 전달되는 함수를 콜백함수(callback function)이라고 함
  • 콜백함수를 전달받은 고차함수는 함수 내부에서 콜백함수를 호출할 수 있음
  • caller 는 조건에 따라 호출하지 않거나, 여러번 실행하는 등의 콜백 함수의 실행 여부를 결정할 수 있음
  • '함수를 리턴하는 함수'를 고안해 낸 논리학자 하스켈 커리의 이름을 따 커리함수라고도 함
    • 단, 커리함수라는 용어를 따로 사용하는 경우에는 고차함수의 의미를 '함수를 인자로 받는 함수'에 국한하여 사용
    • 정확하게 구분하자면, 고차함수가 커리함수를 포함한다.

💡 내장 고차함수


  • JavaScript 에는 기복적으로 내장된 고차함수가 여럿 있으며, 그 중 특정 배열 메소드들이 대표적인 내장 고차함수에 해당된다.

📌arr.map()

: 배열의 각 요소가 특정 논리(함수)에 의해 다른 요소로 지정(map)됨

📌arr.filter()

: 배열의 각 요소가 특정 논리(함수)에 따르면, 참(boolean)일 때 따로 분류(filter)됨

  • 걸러내는 기준이 되는 특정 조건은 arr.filter() 메소드의 인자로 전달되며, 이 때 전달되는 조건은 함수의 형태
  • arr.filter() 메소드는 걸러내기 위한 조건을 명시한 함수를 인자로 받기 때문에 고차함수에 해당
  • arr.filter() 메소드는 배열의 요소, 인자로 전달되는 콜백함수에 다시 전달하고, 콜백함수는 전달받은 요소를 받아 함수를 실행하고, 콜백함수의 내부 조건에 따라 참/거짓을 리턴한다.

📌arr.reduce()

: 각 배열의 요소를 특정 방법(함수)에 따라 원하는 하나의 형태로 응축(reduction)됨

  • reduce는 배열의 요소의 합을 구할 때만 사용하는 것이 아니라 배열을 문자로 배열을 객체로 풍부하게 사용할 수 있다.

📌arr.forEach()

: 주어진 함수를 배열 요소 각각에 대해 실행

📌arr.find()

: 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환, 그런 요소가 없다면 undefined 를 반환

📌arr.sort()

: 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환

profile
안되면 될 때까지👌

0개의 댓글