[자바스크립트 핵심 개념] 콜백 함수

Deong_gu·2023년 11월 11일
0

콜백 함수

  • 함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수
  • 다른 코드의 인자로 넘겨주는 함수
  • 다른 코드(함수 또는 메서드)에게 인자로 넘겨줌으로써 그 제어권도 함께 위임한 함수
  • 콜백 함수를 위임받은 코드는 자체적인 내부 로직에 의해 적절한 시점에 실행함
  • 고차 함수에 의해 호출되며 이때 고차함수는 필요에 따라 콜백 함수에 인수를 전달할 수 있음
  • 콜백 함수로 어떤 객체의 메서드를 전달하더라도 그 메서드는 메서드가 아닌 함수로서 호출됨

고차함수

  • 매개변수를 통해 함수의 외부에서 콜백함수를 전달받은 함수, 고차함수는 콜백 함수를 자신의 일부분으로 합성함
  • 매개변수를 통해 전달받은 콜백함수의 호출시점을 결정해서 호출함

콜백 함수의 제어권을 넘겨받은 코드는 콜백 함수를 호출할 때 인자에 어떤 값들을 어떤 순서로 넘길 것인지에 대한 제어권을 가짐

this

콜백 함수도 함수이기 때문에 기본적으로는 this가 전역객체를 참조하지만, 제어권을 넘겨받을 코드에서 콜백 함수에 별도로 this가 될 대상을 지정한 경우에는 그 대상을 참조하게 된다.

  • call/apply 메서드
    • 제어권을 넘겨받을 코드에서 call/apply 메서드의 첫 번째 인자에 콜백 함수 내부에서의 this가 될 대상을 명시적으로 바인딩함

비동기 제어

동기적인 코드는 현재 실행 중인 코드가 완료된 후에야 다음 코드를 실행하는 방식
비동기적인 코드는 현재 실행 중인 코드의 완료 여부와 무관하게 즉시 다음 코드로 넘어감

  • CPU의 계산에 의해 즉시 처리가 가능한 대부분의 코드는 동기적인 코드임
  • 사용자의 요청에 의해 특정 시간이 경과되기 전까지 어떤 함수의 실행을 보류한다거나(setTimeout),
  • 사용자의 직접적인 개입이 있을 때 비로소 어떤 함수를 실행하도록 대기한다거나(addEventListener),
  • 웹브라우저 자체가 아닌 별도의 대상에 무언가를 요청하고 그에 대한 응답이 왔을 때 비로소 어떤 함수를 실행하도록 대기하는 등(XMLHttpRequest),
  • 별도의 요청, 실행 대기, 보류 등과 관련된 코드는 비동기적인 코드임

[출처]
모던 자바스크립트 Deep Dive 위키북스 이웅모 지음
코어 자바스크립트 위키북스 정재남 지음

profile
프론트엔드 개발자가 되기 위해 공부 중입니다.

0개의 댓글