function add(num1, num2, callback) {
const sum = num1 + num2;
callback(sum);
}
function callback(sum) {
console.log("sum is :", sum);
}
add(2, 4, callback);
Console.log 결과
Callback은 프로그래밍에서 "나중에 실행되는"이라는 의미를 가집니다.
즉, Callback 함수는 다른 함수의 인수로 전달되어, 특정 시점이나 상황에 실행될 수 있는 함수를 의미합니다
function add(num1, num2, callback) {
const sum = num1 + num2;
callback(sum);
}
add(2, 4, function callback(sum) {
console.log("sum is :", sum);
});
위 예시에서 Callback 함수를 별도로 선언하지 않고, 호출문 안에서 바로 정의할 수도 있습니다
function add(num1, num2, callback) {
const sum = num1 + num2;
callback(sum);
}
add(2, 4, function (sum) {
console.log("sum is :", sum);
});
또한 이처럼 익명 함수로 선언하는 것도 당연히 가능하고,
function add(num1, num2, callback) {
const sum = num1 + num2;
callback(sum);
}
add(2, 4, (sum) => {
console.log("sum is :", sum);
});
더 단축시켜 화살표 함수로서 선언하는 것도 가능합니다
콜백 함수 활용 사례
function repeat(count) {
for (let i = 1; i <= count; i++) {
console.log(i);
}
}
// 5번 반복하고 콘솔에 출력하는 함수
repeat(5);
콘솔 결과
다음은 count만큼 반복하며 값을 출력하는 간단한 함수입니다
function repeat(count) {
for (let i = 1; i <= count; i++) {
console.log(i);
}
}
function repeatDouble(count) {
for (let i = 1; i <= count; i++) {
console.log(i * 2);
}
}
function repeatTriple(count) {
for (let i = 1; i <= count; i++) {
console.log(i * 3);
}
}
// 5번 반복하고 콘솔에 출력하는 함수
repeat(5);
repeatDouble(5);
repeatTriple(5);
이제, 값이 1씩 증가하는 대신, 2씩 증가하거나 3씩 증가하는 등의 변화를 줄 때를 생각해보겠습니다. 이를 위해 각각의 함수를 따로 선언한다면 다음과 같이 작성할 수 있습니다.
그럴때 위와같이 Double 과 Triple 이라는 함수를 또 선언을 해주는 것이 현명한 방법일까요?
코드의 가독성을 떨어뜨리고, 복잡성은 증가할 것입니다
이때 콜백 함수를 통해 다음과 같은 상황을 처리할 수 있습니다
function repeat(count, callback) {
for (let i = 1; i <= count; i++) {
callback(i);
}
}
repeat(5, (i) => {
console.log(i * 2)
});
repeat(5, (i) => {
console.log(i * 3)
});
Callback 함수를 활용하면 위 문제를 깔끔하게 해결할 수 있습니다
결론
Callback 함수는 특정 로직을 동적으로 처리해야 하는 상황에서 강력한 도구가 됩니다. 위 예제처럼 반복 로직을 재활용하며 다양한 변화를 쉽게 적용할 수 있어, 효율적이고 간결한 코드 작성이 가능합니다