1급 객체란,
다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.
1급 객체의 조건
- 무명의 리터럴로 생성 가능 (=런타임에 생성이 가능)
- 변수나 자료구조(객체, 배열 등)에 저장 가능
- 함수의 매개변수에 전달 가능
- 함수의 반환값으로 사용 가능
1. 무명의 리터럴로 생성 가능 ( = 런타임에 생성이 가능)
const forward = (count) => {
return ++count;
};
const back = function(count) {
return --count;
};
함수 작성 시 함수명 없이 바로 변수에 저장할 수 있다.
2. 변수나 자료구조(객체, 배열 등)에 저장 가능
const distance = { forward, back };
const distanceArray = [ forward, back ];
변수나 자료구조에 함수를 저장할 수 있다.
4. 함수의 반환값으로 사용 가능 + 3. 함수의 매개변수에 전달 가능
function distanceCounter(num) {
let count = 0;
return function () {
count = num(count);
return count;
};
}
const forwardResult = distanceCounter(distance.forward);
console.log(forwardResult()); // 1
console.log(forwardResult()); // 2
const backResult = distanceCounter(distance.back);
console.log(backResult()); // -1
console.log(backResult()); // -2
함수는 매개변수에게 함수를 전달할 수 있다.
일급 객체 함수는 객체와 동일하게 사용할 수 있다는 의미
-> 값을 사용할 수 있는 곳이라면 어디든지 리터럴로 정의 가능하고 런타임에 함수 객체로 평가된다.
함수 객체와 일반 객체의 차이는
-> 일반 객체와 다르게 함수 객체는 호출 가능
-> 일반 객체와 다르게 함수 고유의 프로퍼티를 소유 (name, length 등)
'Javascript' 카테고리의 다른 글
| [JavaScript 주요 배열 함수] some / every / find / findIndex (0) | 2023.11.24 |
|---|---|
| [JavaScript 주요 배열 함수] sort / forEach / map / filter / reduce (0) | 2023.10.25 |
| [예외 처리] try-catch-finally 문 / throw 문 (0) | 2023.10.22 |