1. 일급 객체(First-class Object)란?
- 다른 객체들에 대해 기본적인 연산이 모두 가능한 객체를 가리킨다. 자기 자신을 변수에 대입한다거나 다른 객체의 인자로 넘긴다거나 하는 연산이 가능할 때 일급 객체라고 한다.
- 기본적으로 일급 객체를 구성하는 요소는 다음과 같은 권리가 있다.
- 모든 요소는 함수의 실제 매개변수가 될 수 있다.
- 모든 요소는 함수의 반환 값이 될 수 있다.
- 모든 요소는 할당 명령문의 대상이 될 수 있다.
- 모든 요소는 동일 비교의 대상이 될 수 있다.
2. 일급 함수(First-class Function)란?
- 함수를 다른 변수와 동일하게 다루는 언어는 일급 함수를 가졌다고 표현하는데, JavaScript는 그 대표적인 언어 중 하나이다.
- 위에서 언급한 일급 객체의 권리를 JavaScript 관점에서 해석해보자.
- JavaScript의 함수는 다른 함수의 매개변수가 될 수 있다.
- JavaScript의 함수는 다른 함수의 반환 값이 될 수 있다.
- JavaScript의 함수는 할당 명령문의 대상이 될 수 있다.
- JavaScript의 함수는 동일 비교의 대상이 될 수 있다.
- MDN에서는 다음과 같이 설명하고 있다.
JavaScript는 함수를 변수에도 할당하거나(1), 다른 함수에 인수로 제공하거나(2), 함수가 함수를 반환할 수 있다(3).
일급 함수의 특징을 코드를 통해 알아보자
(1) 함수는 변수에 할당할 수 있다.
const variable = function () {
console.log("i am function !!!");
}
variable();

(2) 함수는 다른 함수에 인수도 제공할 수 있다.
function whoAmI() {
return "My name is ";
}
function whoAreU(func, myName) {
console.log(func(), myName);
}
whoIAm(whoAmI, "Seung Hyeon");

(3) 함수는 다른 함수를 반환할 수 있다.
function func() {
return function() {
console.log("Hello? I'm the anonymous");
}
}
const variable = func();
variable();
// 여기서 함수를 품은 함수(func)를 '고차 함수',
// 함수에 안긴 함수(익명 함수)를 '콜백 함수'라 한다.

[참조문서]
https://developer.mozilla.org/ko/docs/Glossary/First-class_Function
https://ko.wikipedia.org/wiki/%EC%9D%BC%EA%B8%89_%EA%B0%9D%EC%B2%B4
반응형
'JAVASCRIPT > ES6' 카테고리의 다른 글
| [JS] Currying (0) | 2023.02.03 |
|---|---|
| [JS] Spread Syntax (전개 구문, 전개 연산자) (0) | 2023.02.02 |
| [JS] Prototype (0) | 2023.02.01 |
| [JS] JSON (JavaScript Object Notation) (0) | 2023.01.29 |
| [JS] 구조 분해 할당(Destructuring Assignment) (0) | 2023.01.25 |
댓글