콜백함수는 다른 코드의 인자로 넘겨주는 함수
콜백 함수를 넘겨 받은 코드는 이 콜백 함수를 필요에 따라 적절한 시점에 실행할 것
A와 B는 다음 날 아침 8시에 만나기로 하고 잠을 잠 → 약속 장소에 가려면 늦어도 6시에는 일어나야 함 → A는 불안한 마음에 수시로 깨어 시계를 확인 → 계속 잠을 설쳐 5시 즈음 포기하고 기상 → B는 알림 시계를 세팅 → 시계가 정한 시각에 울리지 않을 염려는 없고 평소 알람 소리에 쉽게 눈을 뜨곤 했던지라 안심하고 꿀잠 → 6시에 상쾌하게 기상
A는 수시로 시간을 확인하는 함수를 직접 호출
B는 시계의 알람 설정 함수 호출, 호출 당시에는 아무것도 하지 않다가 B가 정해준 시각이 됐을 때 ‘알람을 울리는’ 결과를 반환
시간 정보를 제공하는 시계 입장에서 A의 경우 요청할 때마다 수동적으로 시간 정보를 제공하기만 함
B의 경우 요청을 받은 뒤 자체적으로 무언가 수행하다가 적절한 시점에 적극적으로 통보
A의 경우 시계 함수의 제어권은 A에게, 시계는 그저 요청받은 내용을 이행
B는 시계 함수에게 요청을 하면서 알람이 울리는 명령에 대한 제어권을 시계에게 넘겨줌
위와 같이 콜백 함수는 제어권과 관련이 깊음