고차 함수
JavaScript에서 함수는 일급 객체이기에 변수를 할당할 수 있음
함수 표현식은 할당 전에 사용할 수 없음
square(7); -> Reference Error
const square = function(num) { // 변수 square에 함수를 할당하는 함수 표현식 return num * num; }; // 변수 square에는 함수가 할당되어 있으므로 일급객체, 함수 호출 연산자 () 사용 가능 output = square(7);함수는 일급 객체의 특징을 가지기에 아래처럼 객체 속성의 값으로 할당될 수 있음
const cat = { name: 'nabi', age: 3, cry: fuction(){ console.log('miaow..') } }
2. 고차함수의 이해
정의: 함수를 전달인자(argument)로 받을 수 있고, 함수를 return할 수 있는 함수
다른 함수(caller)의 전달인자로 전달되는 함수를 콜백 함수 (callback function)라고 함
콜백 함수를 전달받은 고차함수(caller)는 함수 내부에서 이 콜백함수를 호출(invoke)할 수 있고, 조건에 따라 콜백함수의 실행 여부를 결정할 수도 있음
함수를 리턴하는 함수는 커링함수 라고 하며, 이 용어를 사용할 때는 '함수를 전달인자로 받는 함수'에만 한정해 사용하기도 함. 즉, 고차함수가 커링함수를 포함하는 격.
정리하자면, '함수를 리턴하는 함수'와 '함수를 전달인자로 받는 함수' 모두 고차함수로 사용
a. 다른 함수를 인자로 받는 경우
b. 함수를 리턴하는 경우
c. 함수를 인자로 받고, 함수를 리턴하는 경우
3. 내장 고차 함수
JavaScript에서는 기본적으로 내장된 고차함수가 여러 개 있는데, 그 중 배열 메소드들 중 일부가 대표적인 고차함수에 해당됨.
배열의 filter 메소드는 모든 배열의 요소 중 특정 조건을 만족하는 요소를 '걸러내는' 메소드
여기서 걸러내는 기준이 되는 특정 조건은 filter 메소드의 전달인자로 전달되며, 형태는 함수 형태임.
따라서 filter 메소드는 걸러내기 위한 조건을 명시한 함수를 전달인자로 받기에 고차함수.
filter 활용 시 아래 과정을 기억할 것
배열의 각 요소가
특정 논리 (함수)에 따르면, 사실(true)일 때
따로 분류한다 (filter)
Last updated