함수의 매개변수
, 전달
, 함수형 프로그래밍
, 비동기 처리
, 콜백 패턴
, 비동기 처리 결과
, 상위 스코프 할당
, 후속 처리
자바스크립트에서는 함수의 매개변수
를 통해 다른 함수의 내부로 함수를 전달
할 수 있습니다. 이때, 이 함수를 콜백 함수(callback function)이라고 합니다. 콜백 함수는 이렇게 함수형 프로그래밍
패러다임을 적용하기 위해 활용할 수 있고, 이외에 비동기 처리
(이벤트 처리, Ajax 통신, 타이머 함수 등)에도 중요하게 활용됩니다. 예를 들어 이벤트 리스너에 이벤트 핸들러로써 넣어주는 함수, setTimeout에 인자로 넣어주는 함수들은 콜백 함수입니다.
콜백 함수와 비동기에 대해 조금 더 이야기해보자면, 자바스크립트는 비동기 처리
를 위한 하나의 패턴으로 콜백 함수를 사용합니다. 사실 콜백 패턴으로 비동기 처리
를 하게 되면, 콜백 지옥이 발생해서, Promise를 사용하는 것이 ES6 이후부터는 일반적이기는 합니다.
그래도 콜백 패턴
으로 비동기 처리
를 하는 케이스를 간단히 설명해보자면, 기본적으로 비동기 함수는 비동기 작업 처리 결과
를 외부에 반환하거나 상위 스코프의 변수에 할당
할 수 없습니다. 그래서 비동기 함수에 콜백 함수를 전달해서 후속 처리
를 수행하도록 합니다. 이때 전달되는 콜백 함수는 해당 비동기 함수의 외부에서 선언되었기 때문에, 결과를 외부에 반환
하거나 상위 스코프의 변수에 할당
할 수 있게 됩니다.