자바스크립트에서 객체는 일급 객체이다. 함수 또한 객체로 표현하기 때문에 일급 함수도 만족한다.
즉 함수를 변수에 할당할 수도 있고 객체에 추가할 수도 있으며 다른 함수에 인수로 전달하거나 함수에서 함수를 반환할 수도 있다. 참조 값을 쓸 수 있는 곳이라면 어디든 함수도 사용할 수 있다.
우선 일급 시민(first class citizen)에 대해 알아보자.
일급 시민의 조건은 3가지다.
변수에 담을 수 있다.
인자로 전달할 수 있다.
반환값으로 전달할 수 있다.
이외에도 런타임 생성이 가능, 익명으로 생성 가능을 주장하는 사람도 있다.
일급 객체(first class object)
: 객체를 일급 시민으로 취급한다는 것이다.
일급 함수(first class function)
: 함수를 일급 시민으로 취급한다는 것이다.
함수를 인수로 전달하는 예시)
var numbers = [1,5,8,3,2,7,9,10];
numbers.sort(function(first, second) {
return first - second;
});
console.log(numbers);
// output : [1, 2, 3, 5, 7, 8, 9, 10]
참조 : 객체지향 자바스크립트의 원리