callback
- 외부로 부터 매개변수로 주어지는 함수
- 전달시 함수 그 자체를 전달하는 것이 아닌 함수의
reference
를 전달
const add = (a, b) => a + b;
const multiply = (a, b) => a * b;
function calculate(a, b, action) {
if (a < 0 || b < 0) {
return;
}
let result = action(a, b);
console.log(result);
return result;
}
- action은 콜백함수이다.
- 전달 당시 함수를 바로 호출해서 반환된 값을 전달하지 않고 함수를 가리키고 있는
reference(참조값)
이 전달된다.
- 함수는 고차함수안에서 필요한 순간 나중에 호출된다.
일급 객체
- 일반 객체처럼 모든 연산이 가능한 것
- 함수의 매개변수로 전달
- 함수의 반환값
- 할당 명령문
- 동일 비교 대상
일급 함수
- 함수가 일반 객체처럼 모든 연산이 가능
- 함수의 매개변수로 전달
- 함수의 반환값
- 할당 명령문
- 동일 비교 대상
고차 함수 (Higher-order function)
생성자 함수
- 비슷한 형태의 객체를 특정한 템플릿에 맞게 객체를 찍어내듯이 생성하는 함수
example
function Fruit(name, emoji) {
this.name = name;
this.emoji = emoji;
this.display = () => {
console.log(`${this.name}: ${this.emoji}`);
};
}
// 기본적인 데이터만 인자로 제공해주면 정해진 템플릿을 활용해 객체를 쉽게 생성할 수 있다.
const apple = new Fruit("apple", "🍎");
const orange = new Fruit("orange", "🍊");
- this: 객체 자기 자신을 가리킬 수 있다.
- return
this
; 생략가능 => 생성자 함수에서는 this
가 자동으로 return된다!
생성자 함수를 활용하여 Promise 객체 생성
example
function runInDelay(seconds) {
console.log("시작");
return new Promise((resolve, reject) => { // (resolve, reject) callback 함수를 매개변수로 하여 Promise 객체 생성
if (!seconds || seconds < 0) {
reject(new Error("seconds가 0보다 작음"));
}
setTimeout(resolve, seconds * 1000);
});
}
runInDelay(2)
.then(() => console.log("타이머 완료"))
.catch(console.error)
.finally(() => console.log("끝났다"));