1. 일급 객체란?
일급 객체란, 다음과 같은 조건을 만족하는 개체를 말한다.
- 변수나 데이터 구조 안에 담을 수 있다.
- 파라미터로 전달될 수 있다.
- 반환값으로 사용할 수 있다.
- 동적으로 프로퍼티 할당이 가능하다.
2. 일급 함수란?
일급 함수란, 일급 객체의 조건을 만족하는 함수를 의미한다. JS 에서는 함수가 일급 객체이다.
그 말은, JS에서는 다음과 같은 작업들이 가능하는 의미이다.
- 함수를 변수나 데이터 구조 안에 담을 수 있다.
- 함수는 파라미터로 전달될 수 있다.
- 함수는 반환값으로 사용할 수 있다.
사실 이렇게 글로 보면 이해가 잘 가지 않을 수도 있다. 하지만 JS를 사용해 코드를 짜본 사람이라면 어쩌면 이미 위의 개념들을 사용하고 있을 수도 있다. 각각의 예시를 보자.
1) 함수를 변수나 데이터 구조 안에 담을 수 있다.
const myFunction = function() {
console.log("Hello, I'm a function!");
};
myFunction(); // Outputs: Hello, I'm a function!
2) 함수는 파라미터로 전달될 수 있다.
function greet() {
console.log('Hello!');
}
function callFunction(func) {
func();
}
callFunction(greet); // Outputs: Hello!
위의 코드는 다음과 같은 순서로 이해하면 될 것 같다.
- callFunction의 인자로 'Hello!'를 출력하는 greet() 함수가 전달된다.
- callFunction에서 인자로 전달된 greet()를 실행한다.
- 'Hello!'가 출력된다.
3) 함수는 반환값으로 사용할 수 있다.
function createGreeting(name) {
return function() {
console.log('Hello ' + name);
};
}
const greetJohn = createGreeting('John');
greetJohn(); // Outputs: Hello John
위의 코드는 다음과 같은 순서로 이해하면 될 것 같다.
- createGreeting 함수는 'Hello' 뒤에 인자를 붙여서 출력하는 함수를 반환한다.
- createGreeting에 'John'을 인자로 전달한다.
- 내부 함수가 호출되어서 'Hello John'을 출력하는 함수를 반환한다.
- 'Hello Johh'이 출력된다.
'Web > Vanilla JS' 카테고리의 다른 글
JS는 어떻게 배열의 사이즈를 지정하지 않고 사용할 수 있을까? (0) | 2024.06.16 |
---|---|
호이스팅(Hoisting) (2) | 2023.09.03 |
Symbol (0) | 2023.04.06 |
얕은 복사와 깊은 복사(Shallow Copy & Deep Copy) (0) | 2023.04.03 |