📌 일급객체란 무엇인가?
일급객체에 대해 알아보자!
주제: 일급객체(first-class object)
일급객체란?
컴퓨터 프로그래밍 언어 디자인에서, 일급 객체(영어: first-class object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다. - by 위키백과.
참고로 일급객체의 자격을 가진 함수를 일급함수라고 한다.
이제 일반적으로 적용 가능한 연산에 대해 자세히 알아보자.
- 변수에 할당할 수 있다.
- 함수가 인자로 다른 함수를 받을 수 있다.
- 함수를 반환값으로 반환할 수 있다.
- 런타임에 함수 생성이 가능하다. (리터럴로 생성이 가능하다)
위와 같은 조건들을 기준으로 일급객체로 정의할 수 있다.
1. 변수에 할당할 수 있다.
const mySumFunc = function (num1, num2){
return num1+num2;
}
JS의 함수표현식의 경우이다.
mySumFunc라는 변수 내에 함수를 할당하였다.
2. 함수가 인자로 다른 함수를 받을 수 있다.
function sum(num1, num2){
return num1+num2;
}
function funcDouble(func, num1, num2){
let funcResult;
num1 *= 2;
num2 *= 2;
funcResult = func(num1, num2);
return funcResult;
}
let result = funcDouble(sum, 5, 3);
// result: 16
funcDouble 함수를 살펴보면, 파라미터로 받은 함수를 활용하여 연산을 하는 것을 확인할 수 있다.
일급객체는 이처럼 함수를 인자로서 받을 수 있다.
3. 함수를 반환값으로 반환할 수 있다.
function sum(num1, num2){
return num1+num2;
}
function funcDouble(func, num1, num2){
num1 *= 2;
num2 *= 2;
return func(num1, num2)
}
let result = funcDouble(sum, 5, 3);
// result: 16
위와 비슷한 예제지만, 해당 예제에서는 return에 함수 자체를 던진다.
일급객체는 이처럼 함수를 반환값으로 던질 수 있다.
그래서 뭐?
일급 객체는 고차함수와 콜백함수를 만들 수 있다.
고차함수: 함수를 전달인자(argument) 또는 매개변수(parameter)로 받거나 함수를 리턴하는 함수. 콜백함수: 다른 함수의 인자로써 넘겨진 후 특정 이벤트에 의해 호출되는 함수.
출처
https://ko.wikipedia.org/wiki/%EC%9D%BC%EA%B8%89_%EA%B0%9D%EC%B2%B4
https://www.hanumoka.net/2017/08/31/javascript-20170831-javascript-first-object/