염딩코

[JavaScript] 함수는 왜 일급객체(First Class Object)일까? 본문

Front-End/Javascript

[JavaScript] 함수는 왜 일급객체(First Class Object)일까?

johnyeom 2024. 1. 9. 11:47

일급객체

일급객체란 무엇일까?

 

다음의 조건을 만족하는 객체를 일급객체라 한다.

1. 무명의 리터럴로 생성할 수 있음.(즉, 런타임에 생성이 가능함.)
2. 변수나 자료구조(객체, 배열 등)에 저장할 수 있음.
3. 함수의 매개변수에 전달할 수 있음.
4. 함수의 반환값으로 사용할 수 있음.

 

자바스크립트에서 함수는 위의 조건을 모두 만족한다. 

그래서 자바스크립트에서는 함수를 일급객체라고 할 수 있다.

 

다음 예제를 살펴보자.

 

 

함수가 일급객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미다.

객체는 값이므로 함수는 값과 동일하게 취급할 수 있다.

 

일급객체로서 함수가 가지는 가장 큰 특징은 일반 객체와 같이 함수의 매개변수에 전달할 수 있으며, 함수의 반환값으로 사용할 수도 있다는 것이다.

 

그렇다면 일반 객체와 함수는 차이가 없을까?

 

일반 객체는 호출할 수 없지만, 함수 객체는 호출을 할 수 있다는 차이점이 있고,

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

 

다음 시간에는 함수 고유의 프로퍼티에 대해서 알아보자.