1. 일급 객체 (First Class Object)
ㅇ 일급 객체는, 자바스크립트 언어 등에서 다음과 같이 특수한 성질을 갖는 객체를 말함
ㅇ 특징
- 리터럴에 의해 생성 가능 ☞ 객체 리터럴, 함수 리터럴 참조
- 동적으로 생성, 할당(대입) 가능 (런타임시 리터럴에 의해 생성 가능)
- `변수`,`배열 내 요소`,`객체의 프로퍼티` 등에 할당(대입) 가능
- 함수를, `파라미터로써 전달` 가능
- 함수를, `결과 값으로 리턴` 가능
2. 고차 함수 (Higher-order Function,HOF), 일급 함수 (First Class Function)
ㅇ 함수를 `인수로써 전달` 받거나, `결과로써 반환`을 할 수 있는 함수를 말함
- 고차 함수를 사용하면, 값(value) 뿐 만 아니라, 동작(action)도 추상화할 수 있음
ㅇ 고차 함수는, 불변성(immutability)을 지향하는 함수형 프로그래밍에 기반을 두고 있음
- 프로그램의 실행 중 변수가 변하는 상태에 대한 고려가 필요한 명령형 프로그래밍 기법과는 다름
- 즉, 제어문(조건문,반복문 등)에서 나타나는, 논리 흐름,상태 변화 추적 등의 복잡성 제거 가능
ㅇ 한편, 자바스크립트 함수는,
- 일급 객체이며 동시에 일급 함수 임
ㅇ 커링 (Currying)
- 2 이상의 인수를 받는 함수를 분해해서, 각각 1 인수로 된 2 이상의 중첩 함수로 변환하는 것