Space
article thumbnail
Published 2023. 5. 21. 10:42
[JS] 일급 객체 JavaScript
반응형

조건

 

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

 


의미와 특징

 

 

일급 객체라는 의미는 

함수를 객체와 동일하게 사용할 수 있다는 의미이다.

 

 

일급 객체로서 함수가 가지는 가장 큰 특징은

일반 객체와 같이 함수의 매개변수에 전달할 수 있으며, 함수의 반환값으로 사용할 수도 있다.

 

 

함수는 객체이지만 일반 객체와는 차이가 있다.

 

일반 객체는 호출할 수 없지만 함수 객체는 호출할 수 있다.

그리고 함수 객체는 일반 객체에는 없는 함수 고유의 프로퍼티를 소유한다.

 


 

 

일급 객체를 알아보는 시간이었습니다.

틀린 내용은 댓글로 알려주시면 감사하겠습니다.

 

 

반응형
profile

Space

@Space_zero

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!