| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 10815
- 정처기실기
- 백준10815
- Vue
- JS
- TypeScript
- 코딩테스크
- styled-components
- 백준
- 투두리스트
- JavaScript
- 파이썬
- 바닐라js
- 백준10798
- 코딩테스트
- react
- 정보처리기사
- 정처기
- 백준2501
- 코테
- 이벤트버블링
- 리액트
- Vue3
- reactrouter
- 타입스크립트
- NextJs
- 백준5086
- zustand
- 자바스크립트
- 정처기필기
- Today
- Total
윤시의 블로그
[JavaScript] 일급객체 (First Class Object) 본문
JavaScript에서 일급 객체(First-Class Object)는 "객체로서 함수와 같은 다른 데이터 타입처럼 취급될 수 있는 객체"를 말한다. 함수나 변수도 일급 객체로 취급된다. 이를 이해하기 위해서는 "객체"라는 개념과 값처럼 다룰 수 있다는 의미를 잘 이해하는 것이 중요하다.
1. 객체란 무엇인가?
자바스크립트에서 객체는 프로퍼티(속성)와 메소드(기능)를 가질 수 있는 데이터 구조이다. 객체는 키-값 쌍으로 구성된 데이터 집합이다.
const person = {
name: 'John',
age: 30,
greet: function() {
console.log('Hello!');
}
};
이 코드에서 person 객체는 name, age, greet라는 프로퍼티를 가지고 있다. 그리고 greet는 함수다.
2. 일급 객체의 특징
- 변수에 할당할 수 있다: 다른 값과 마찬가지로 변수에 할당할 수 있다.
- 함수의 인자로 전달할 수 있다: 다른 함수의 인자로 전달할 수 있다.
- 함수의 반환값으로 사용할 수 있다: 함수에서 결과로 반환할 수 있다.
- 객체의 속성으로 사용할 수 있다: 객체의 프로퍼티로 저장할 수 있다.
3. 자바스크립트에서 함수는 왜 일급 객체인가?
자바스크립트에서 함수는 일급 객체다. 즉, 함수는 위 조건들을 모두 만족하며, 이는 함수가 값처럼 다룰 수 있다는 의미다. 예를 들어, 함수는 다른 변수에 할당될 수 있고, 함수의 인자로 전달될 수 있으며, 다른 함수에서 반환값으로 사용할 수 있고, 객체의 프로퍼티로 저장될 수 있다.
4 .함수가 일급 객체임을 보여주는 예제
예시 1: 변수에 함수 할당하기
const greet = function() {
console.log('Hello, World!');
};
greet(); // 'Hello, World!'
- greet 변수에 익명 함수를 할당했다.
- 이 익명 함수는 console.log('Hello, World!')를 실행하는 기능을 가지고 있다.
- 그 후 greet()를 호출하면, greet 변수에 할당된 함수가 실행되어 'Hello, World!'가 출력된다.
이 코드에서 greet는 함수를 값처럼 다룬다는 점을 보여준다. 함수를 변수에 저장할 수 있다는 것이 바로 일급 객체의 특성이다.
예시 2: 함수의 인자로 전달하기
function callFunction(fn) {
fn();
}
callFunction(function() {
console.log('This is a function!');
}); // 'This is a function!'
- callFunction은 fn이라는 매개변수를 받는 함수다. 이 fn은 함수여야 한다.
- callFunction을 호출할 때, function() { console.log('This is a function!'); }라는 익명 함수를 인자로 전달하고 있다.
- callFunction 내부에서 fn()을 호출하면, 인자로 전달된 익명 함수가 실행된다.
- callFunction을 실행하면 'This is a function!'이 출력된다.
이 예제는 함수를 다른 함수의 인자로 전달하는 방법을 보여준다. 함수가 일급 객체이므로 함수를 값처럼 취급하여 다른 함수에 전달할 수 있다는 점을 보여준다.
예시 3: 함수의 반환값으로 사용하기
function multiply(a) {
return function(b) {
return a * b;
};
}
const double = multiply(2);
console.log(double(5)); // 10
- multiply 함수는 하나의 매개변수 a를 받아 내부에서 또 다른 함수를 반환한다. 이 반환된 함수는 매개변수 b를 받아 a * b를 반환한다.
- multiply(2)를 호출하면, a 값이 2로 설정된 내부 함수가 반환된다. 이 반환된 함수는 double 변수에 할당된다.
- double(5)를 호출하면, a는 2이고, b는 5이므로 2 * 5가 계산되어 10이 반환된다.
이 예제는 함수가 다른 함수를 반환하는 방식이다. multiply 함수에서 반환된 함수가 새로운 함수로 사용될 수 있다는 점을 보여준다.
예시 4: 객체의 속성으로 함수 사용하기
const obj = {
greet: function() {
console.log('Hello from the object!');
}
};
obj.greet(); // 'Hello from the object!'
- obj는 객체이고, 그 안에 greet라는 함수가 속성으로 포함되어 있다. 이 greet는 함수다.
- obj.greet()를 호출하면, obj 객체에 포함된 greet 함수가 실행된다.
- 이 경우, greet는 객체의 프로퍼티로 저장된 함수로, 객체 내에서 함수를 다룰 수 있음을 보여준다.
이 예제는 함수가 객체의 속성으로 사용될 수 있다는 점을 보여주며, 함수가 값처럼 취급되어 객체에 속성으로 포함될 수 있음을 보여준다.
5. 결론
JavaScript에서 함수는 일급 객체이기 때문에, 함수 자체를 값처럼 다룰 수 있다. 변수에 할당하거나, 다른 함수에 전달하거나, 다른 함수의 반환값으로 사용할 수 있다는 점에서 유용한 특징을 가지고 있다. 이런 특성 덕분에 자바스크립트는 유연하고 강력한 함수형 프로그래밍을 가능하게 하며, 콜백 함수, 고차 함수 등을 이용해 다양한 방식으로 문제를 해결할 수 있다.
'JavaScript' 카테고리의 다른 글
| [JavaScript] 자바스크립트 생성자 함수, 객체 생성 방식 (0) | 2025.03.14 |
|---|---|
| [JavaScript] Class (0) | 2025.02.27 |
| [JavaScript] DOM (0) | 2025.02.25 |
| [JavaScript] 엄격모드(strict mode) (0) | 2025.02.25 |
| [JavaScript] 스코프(Scope), 스코프체인(Scope Chain), 호이스팅(Hoisting) (0) | 2024.12.06 |