반응형
조건
1. 무명의 리터럴로 생성할 수 있다. (즉, 런타임 생성이 가능하다.)
2. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다.
3. 함수의 매개변수에 전달할 수 있다.
4. 함수의 반환값으로 사용할 수 있다.
JavaScript의 함수는 위의 조건을 모두 만족하므로 일급객체이다.
// 1. 함수는 무명의 리터럴로 생성할 수 있다.(즉, 런타임에 생성이 가능하다.)
// 2. 함수는 변수에 저장할 수 있다.
// 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다.
const increase = function(num) {
return num + 1;
};
const decrease = function(num) {
return num - 1;
};
// 2. 함수는 자료구조(객체, 배열 등)에 저장할 수 있다.
const auxs = { increase, decrease };
// 3. 함수의 매개변수에 전달할 수 있다.
// 4. 함수의 반환값으로 사용할 수 있다.
function makeCounter(aux) {
let num = 0;
return function(){
num = aux(num);
return num;
};
}
// 3. 함수는 매개변수에게 함수를 전달할 수 있다.
const increaser = makeCounter(auxs.increase);
console.log(increaser()); // 1
console.log(increaser()); // 2
// 3. 함수는 매개변수에게 함수를 전달할 수 있다.
const decreaser = makeCounter(auxs.decrease);
console.log(decreaser()); // -1
console.log(decreaser()); // -2
의미와 특징
일급 객체라는 의미는
함수를 객체와 동일하게 사용할 수 있다는 의미이다.
일급 객체로서 함수가 가지는 가장 큰 특징은
일반 객체와 같이 함수의 매개변수에 전달할 수 있으며, 함수의 반환값으로 사용할 수도 있다.
함수는 객체이지만 일반 객체와는 차이가 있다.
일반 객체는 호출할 수 없지만 함수 객체는 호출할 수 있다.
그리고 함수 객체는 일반 객체에는 없는 함수 고유의 프로퍼티를 소유한다.
일급 객체를 알아보는 시간이었습니다.
틀린 내용은 댓글로 알려주시면 감사하겠습니다.
반응형