Callback 함수는 다른 함수의 인자로 넘겨주면서 그 제어권도 같이 위임한 함수이다. Callback 함수를 위임받은 함수는 자체 내부 로직에 따라서 Callback 함수를 적절한 시점에 실행한다.
콜백함수의 제어권을 넘겨받은 코드는 콜백 함수를 호출할 때 인자에 어떤 값들을 어떤 순서로 넘길 것인지에 대한 제어권을 갖는다.
/*Callback 함수를 호출하는 주체가 사용자가 아닌 map 메서드이므로
인자에 어떤 값을 전달할지는 전적으로 map 메서드에 달렸다.*/
const arr = [10, 20, 30];
let newArr = arr.map((currentValue, index) => (
console.log(currentValue, index)
));
// 10 0
// 20 1
// 30 2
let newArr = arr.map((index, currentValue) => (
console.log(currentValue, index)
));
// 0 10
// 1 20
// 2 30
콜백 함수로 어떤 객체의 메서드를 전달하더라도 그 메서드는 메서드가 아닌 함수로서 호출한다.
콜백함수로 전달된 메서드는 this를 별도로 바인딩하지 않는 한 전역객체를 this로 갖는다.
출처: 코어 자바스크립트