다음 조건을 만족하는 객체는 일급 객체
라고 한다.
런타임에 생성이 가능하다.
변수나 자료구조(객체, 배열 등)에 저장할 수 있다.
함수의 매객변수에 전달할 수 있다.
함수의 반환값으로 사용할 수 있다.
// 함수는 무명 리터럴로 생성가능
// 함수는 변수에 저장 가능
// 런타임 시점에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당 된다.(정확히는 함수 객체의 참조값이 할당 된다.)
const increase = function (num) {
return ++num;
};
const decrease = function (num) {
return --num;
};
// 함수는 객체에 저장할 수 있다.
const predicate = { increase, decrease };
// 함수는 매개변수(= 파라미터, parameter)에 전달할 수 있다.
// 함수는 함수의 반환 값으로 사용할 수 있다.
function makeCounter(predicate) {
let num = 0;
return function () {
num = predicate(num);
return num;
};
}
// 함수는 인수로 함수를 전달할 수 있다.
const increaser = makeCounter(predicate.increase);
console.log(increaser()); // 1
console.log(increaser()); // 2
const decreaser = makeCounter(predicate.decrease);
console.log(decreaser()); // -1
console.log(decreaser()); // -2
일급 객체로써 함수가 가지는 가장 큰 특징
함수를 함수의 매개변수에 전달
할 수 있다.반환값으로 함수를 사용
할 수 있다.
함수도 객체(object)다
. 따라서함수도 프로퍼티를 가질 수 있다.
arguments 객체
는 함수 호출 시전달된 인수(argument)들의 정보를 담고 있는 순회 가능한(iterable) 유사 배열 객체
이다.
arguments 객체를 참조