콜백 함수(Callback function) - 회복맨 블로그

콜백 함수(Callback function)

javascript 2017.09.03 16:51

일반적인 함수


일반적인 함수는 파라미터를 받아 함수 내부로 진입하고 결과값을 돌려줄 때는 return키워드를 사용해 호출자에게 값을 돌려 주는 구조로 되어 있습니다. 또는 파라미터 자체를 Call by reference로 전달(포인터 전달)해 호출자가 참조하는 값 자체를 함수 내부에서 변경하기도 합니다. 이 경우 리턴값은 없거나 에러 여부를 전달하는 데 쓰이게 됩니다.


예제

1
2
3
4
5
6
7
// 일반적인 함수
function sum(num1, num2){
    return num1+num2;
}
 
// 함수 호출
sum(12);
cs




콜백 함수


콜백 함수는 함수로써 다른 함수에 전달되며, 이는 외부 함수 내에서 일종의 루틴 또는 동작을 완성하기 위해 호출됩니다.


예제

1
2
3
4
5
6
7
8
9
10
function greeting(name){
    alert('반갑습니다. ' + name);
}
 
function processUserInput(callback){
    var name = prompt('이름을 입력해 주세요.');
    callback(name);
}
 
processUserInput(greeting);
cs



-------------------------------------------------------------------------------


출처: MDN Callback function






-------------------------------------------------------------------------------


에러가 나신다는 분이 계셔서 답글 납깁니다.

이 예제에 있는 내용을 그대로 복사 후 붙혀넣기 해서 예제를 실행시켰습니다.

저는 잘 되는데 어떤 부분에서 어떤 에러가 나시는지 mahan89@daum.net 으로 메일 주시면 확인해 보겠습니다.






댓글 5

  • 나은성 (2018.08.27 10:43)

    토시하나 안틀리게 작성하여 실행했는데 에러네요.
    문법상 맞는건지 확인 부탁드립니다.

    • 회복맨 (2018.08.27 11:02 신고)

      안녕하세요 방문해 주셔서 감사합니다.

      우선 문법상 맞습니다.
      그결과로 제가 실행한 모습을 본문을 수정해서 남겼습니다.
      이글의 본문을 다시한번 확인해 주시기 바랍니다.

      저는 잘 되서 어떻게 실행시키셨는지 알려주세요. 확인 후 답변 남겨 드리겠습니다.

    • 나은성 (2018.08.27 11:35)

      빠른답변 감사드립니다.
      실은 요즘 js매력에 푹 빠져있는 쌩초보자 입니다.
      이유는 중요하고 작은 실무 구현용 테스트로 어떤 명제를 제시할때 기존의 C 대비 능률이 말도 안되게 좋기 때문입니다.

      초보 입장에서 위 코드는 개념잡기 좋은거같아 변수명칭만 다르게 타이핑했고 alert 함수만 console.log로 대체했습니다.
      저는 Nodejs 환경하에 실행했는데
      모듈 어쩌고 오류만 주루룩~ 나오네요.

    • 회복맨 (2018.08.27 11:56 신고)

      window 의 명령프롬프트(cmd)
      또는 맥의 터미널(terminal) 환경에서 node 로 js파일을 실행 시 자바스크립트의 prompt 함수는 동작하지 않습니다.
      때문에 에러가 나는것으로 보이며, 위의 예제는 웹에서만 실행시키는걸 추천드리는 편입니다.

  • 배롱진 (2019.08.02 14:03)

    안녕하세요 , 저도 완전 초보인데 콜백함수에대해서 찾다가 여기까지 오게되었어요!
    콘솔창에 따라쳐보니 똑같이 잘됬구요.
    제가 이해한게 맞는지 여쭤보려구여!
    두번째 함수 processUserInput 에서 prompt 다음줄에 있는 세번째줄에
    callback(name) 이 나오잖아요.
    그게 첫번째 만들어 놓은 greeting 함수의 parameter 즉 name을
    callback(name)으로 불러와서 쓸수 있다는것 보고 콜백함수라고 하는건가요?
    만들어놓은 함수를 다른함수에서 콜백으로 불러오는것보고 콜백함수라고 하는게 맞을까요?
    제가 이해한게 맞는지... 궁금합니다 하하...