main(function () {})
function main(param) {
param()
}
function main(x) {
x();
}
function sayGood() {
console.log('좋아요');
}
main(sayGood);
// 좋아요
x는 함수니까 소괄호 붙여서 콜백함수 호출 가능
main 함수를 호출할 때 sayGood이라는 콜백함수를 인자로 전달해줬기 때문에 main 함수의 x 매개변수로 sayGood이 들어가게 됨
main 함수 내부의 코드가 실행이 되면서 전달해준 콜백함수가 호출이 되어서 sayGood 함수가 잘 실행됨
중요한 점 : 콜백함수는 콜백함수를 전달받은 함수에 의해서 호출이 된다
sayGood이라는 함수를 main 함수에 전달해줬기 때문에 sayGood 콜백함수는 main 함수 내부에서 main 함수의 구현 사항에 의해 호출이 됨
콜백함수가 언제 호출될지는 main함수의 구현 사항에 달려있음
function main(x) {
console.log('준비작업입니다');
x();
console.log('정리작업입니다');
}
function sayGood() {
console.log('좋아요');
}
main(sayGood);
이렇게 콜백함수를 호출 전에 준비작업을 실행시키고, 콜백함수 호출 후에 정리작업을 실행시킬 수 있음
콜백함수를 안에서 전달하는것도 가능
main(function sayGood() {
console.log('좋아요');
})
main(function () {
console.log('좋아요');
})
main(() => {
console.log('좋아요');
})
main(sayGood());
function main(x) {
console.log('준비작업입니다');
x();
console.log('정리작업입니다');
}
function sayGood() {
console.log('좋아요');
return 3
}
main(sayGood());
function greetToUser(greet) {
const name = '햅피빈';
greet(name);
}
function greetInKorean(name) {
console.log(name + '님, 안녕하세요');
}
greetToUser(greetInKorean);
// 햅피빈님, 안녕하세요
greetInKorean 콜백함수 실행 과정
greetToUser의 인자로 greetInKorean이라는 콜백 함수를 전달해줬기 때문에 greet은 greetInKorean임
전달해준 콜백함수를 호출할때 콜백함수의 인자로 함수 내부에서 정의해준 name이라는 변수를 넣어줬기 때문에
greetInKorean이 실행이 될 때 '햅피빈'이 name으로 들어감
console에 '햅피빈님, 안녕하세요'이 잘 출력이 됨
function greetToUser(greet) {
const name = '햅피빈';
// ... 데이터 로딩
greet(name);
}
function greetInKorean(name) {
console.log(name + '님, 안녕하세요');
}
function greetInEnglish(name) {
console.log('Hi, ' + name);
}
greetToUser(greetInEnglish);
// Hi, 햅피빈
setTimeout(() => {
console.log('hi')
}, 1000);