일급 객체란 다른 객체들에게 일반적으로 적용되는 모든 연산을 다 지원하는 객체를 말한다.
그 중 함수가 일급 객체로 취급되는 5가지의 경우를 적어보겠다.
const testFunc = function() {
console.log('TEST');
};
testFunc(); // 'TEST'
함수는 변수에 할당될 수 있으며, 값으로 취급되기 때문에 다른 변수처럼 할당할 수 있다.
const mainFunc(func) {
func();
}
const testFunc = function() {
console.log('TEST');
};
mainFunc(testFunc); // 'TEST'
함수는 다른 함수에 인자로 전달될 수 있고 이를 콜백 또는 고차 함수를 작성할 수 있다.
const mainFunc(num) {
return function(x) {
return x + num;
}
}
const subFunc = mainFunc(10);
console.log(subFunc(20)); // 30 출력
위와 같이 함수를 반환할 수 있다.
const human = {
name:"카타리나",
funcName: function() {
console.log(`hello. ${this.name}`);
}
};
human.funcName(); // hello. 카타리나 출력
객체의 프로퍼티로 함수를 할당할 수 있다.
객체 값 불러오듯이 사용하면 된다.
const calculator = [
function(a, b) {
return a+b;
},
function(a, b) {
return a-b;
},
function(a, b) {
return a*b;
},
function(a, b) {
return a/b;
}
];
console.log(calculator[0](1,2)); // 3 출력
console.log(calculator[1](1,2)); // -1 출력
console.log(calculator[2](1,2)); // 2 출력
console.log(calculator[3](1,2)); // 0.5 출력
배열의 요소로 할당될 수 있으며 인덱스를 사용하여 함수를 활용할 수 있다.