콜백함수란?

callback은 부르다(call)+되돌아오다(back)의 합성어로, 되돌아 호출해달라는 명령이다. X라는 어떤 함수를 호출하면서 특정 조건일 때 Y함수를 실행해 알려달라는 요청을 함꼐 보내는 것이다. 이처럼 함수 B는 해당 조건이 갖춰줬는지 여부를 스스로 판단하고 Y함수를 직접 호출한다.

<aside> 💡 콜백 함수는 다른 코드(함수 또는 메서드)에게 인자로 넘겨줌으로써 그 제어권도 함께 위임한 함수이다.

</aside>

콜백 함수를 위임받은 코드는 자체적인 내부 로직에 의해 이 콜백 함수를 적절한 시점에 실행할 것이다.

콜백 함수의 예시

만약 6시에 기상해야 한다면, 6시로 알람을 맞출것이다.

<aside> ⏰ 이는 사용자가 시계(함수)에게 요청을 하면서 알람을 울리는 명령에 대한 제어권을 시계에게 넘겨주는 것이다.

</aside>

이렇듯 콜백 함수는 제어권과 관련이 깊다.

제어권

콜백 함수와 비동기의 대표적인 예로는 setInterval함수가 있다.

// 구조
setInterval(func, delay[, param1, param2, ...]);

// 사용예
// ---코드 추가---

setInterval다른 코드에 첫 번째 인자로서 함수로 넘겨주면, setInterval은 해당 함수에 대해 제어권을 넘겨받는다. 이후 setInterval 이 스스로의 판단에 따라 적절한 시점에 익명 함수를 실행한다.

<aside> 💡 이처럼 콜백 함수의 제어권을 넘겨받은 코드는 콜백 함수 호출 시점에 대한 제어권을 가진다.

</aside>

인자

콜백 함수에서 매개변수로 this(thisArg)를 넘겨받는 경우가 있다. 이때 this를 생략해 넘겨줄 경우에는 일반적인 함수와 마찬가지로 전역객체가 바인딩된다.

map 메서드