728x90
함수를 변수에 할당하는 등의 작업이
함수가 일급 객체이기 때문이라는 것을 알고
일급 객체에 대한 공부한 기록이다.
일급 객체
JS에서 일급 객체는 아래의 3가지의 조건을 만족해야 한다.
- 변수에 할당할 수 있다.
- 함수의 인자로 전달할 수 있다.
- 함수의 결과로서 반환될 수 있다.
굳이 예제를 보지 않아도 이해할 수 있는 조건이다.
일급 객체의 조건을 보면 함수 또한 일급 객체라는 것을 알 수 있다.
일급 객체의 특성을 가지면서 함수가 구현할 수 있는 기능은 아래와 같다.
- 고차함수를 만들 수 있다.
- 콜백함수를 사용할 수 있다.
일급 객체의 조건을 하나씩 함수에 적용시켜 보자.
변수 할당
const foo = function(){
console.log("foobar");
};
foo();
//foobar
위의 코드를 보면 함수가 리터럴 방식으로 만들어진 것을 볼 수 있다.
리터럴 방식이 함수가 변수에 할당될 수 있다는 것을 보여주는 생성 방식이다.
인자로 전달
function sayHello() {
return "Hello, ";
}
function greeting(helloMessage, name) {
console.log(helloMessage() + name);
}
greeting(sayHello, "JavaScript!");
// Hello, JavaScript!
sayHello라는 함수가 greeting의 인자로 전달된 것을 볼 수 있다.
greeting은 sayHello를 전달받음으로써 함수 내부에서 helloMessage를 사용할 수 있다.
함수의 반환값
function sayHello() {
return () => {
console.log("Hello!");
};
}
위에서는 sayHello 함수가 익명 함수를 반환한 것을 볼 수 있다.
익명 함수가 반환됨에 따라 익명 함수 내부의 코드가 실행되었다.
고차함수/콜백함수
고차함수는 함수를 인자로 전달받거나 함수를 반환하는 함수를 말한다.
위의 예시에서 '인자로 전달'에서 sayHello를 인자로 전달받은 greeting,
'함수의 반환값'에서 익명 함수를 반환한 sayHello가 고차함수라고 할 수 있다.
콜백함수는 인자로 전달되는 함수를 말한다.
'인자로 전달'에서 greeting으로 전달되는 sayHello가 콜백함수라고 할 수 있다.
728x90
'Frontend > JS' 카테고리의 다른 글
[JS] 클로저를 이용한 정보 은닉 구현(클로저, 렉시컬 스코프 개념) (0) | 2023.01.06 |
---|---|
[JS] 로컬스토리 사용법(Set, Get, Remove, JSON) (0) | 2022.07.20 |
[JS] 자바스크립트에 CSS 적용하기/classList/toggle (0) | 2022.07.08 |