[Javascript] 콜백 함수 Callback function

2024. 12. 13. 12:23·JavaScript

콜백 함수(Callback)란 자신이 아닌 다른 함수에 인수로서 전달이 되는 함수

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 함수는 특정 로직을 동적으로 처리해야 하는 상황에서 강력한 도구가 됩니다. 위 예제처럼 반복 로직을 재활용하며 다양한 변화를 쉽게 적용할 수 있어, 효율적이고 간결한 코드 작성이 가능합니다

 

저작자표시 비영리 변경금지 (새창열림)
'JavaScript' 카테고리의 다른 글
  • [Javascript] 코딩 입문 트레이닝 String.fromCharCode, sort(), Math.floor()
  • 면접에서 자주 출제될 것 같은..? 코딩 테스트 문제 풀이🥕
  • ES6+ 자바스크립트 중요 개념 정리 🔑 - 이벤트(event)
  • ES6+ 자바스크립트 중요 개념 정리 🔑 - 데이터 속성 dataset
Jelong
Jelong
커스텀 웹: https://jaehong-park.com Github: https://github.com/qkrwoghd04
  • Jelong
    24/7 Developer's Note
    Jelong
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Software Engineering
      • Ubuntu
      • Network
      • JavaScript
      • Web
      • Interaction Design
      • React Native
      • React
      • Algorithm
      • Java
      • Database design
      • IT Trend
      • TroubleShooting
      • AWS
      • Interview
      • LG CNS AM CAMP 1기
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    mininet
    JS
    javascript
    티스토리챌린지
    css
    generic
    미니넷
    AWS
    Queues
    블랙 박스 테스트
    prototyping
    java
    expo
    자바
    데이터 구조
    heap
    html
    화이트 박스 테스트
    typescript
    알고리즘 분석
    frontend
    ChatGPT
    오블완
    알고리즘
    이진트리
    자바스크립트
    BST
    소프트웨어 공학
    React
    GPT-4
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Jelong
[Javascript] 콜백 함수 Callback function
상단으로

티스토리툴바