제어권을 위임하는 함수입니다.
예를 들면, A 함수의 인자로 콜백함수 B를 전달하면 A가 B의 제어권을 갖게 됩니다.
위임하는 제어권에는 실행 시점, 매개변수, this가 있습니다.
특별한 요청(bind)이 없는 한 A에 미리 정해놓은 방식에 따라 B를 호출합니다.
어떤 시점에 콜백을 호출하는지입니다.
cb함수의 실행 시점 제어권을 setInterval에게 넘겨줍니다.
let cb = function() {
console.log(`1초마다 실행`)
}
setInterval(cb, 1000);
인자에는 어떤 값들을 지정할지입니다.
콜백 함수를 forEach에 넘기면 콜백함수에 들어오는 매개변수의 내용과 순서는 forEach에 정해진 방식이 됩니다.
let arr = [1, 2, 3, 4, 5];
let entries = [];
arr.forEach(function(v, i) {
// forEach의 매개변수는 배열에서 현재 처리중인 요소, 인덱스, 적용되는 배열 순으로 정해집니다.
entries.push([i, v, this[i]]);
}, [10, 20, 30, 40, 50]);
console.log(entries)
// [[0, 1, 10], [1, 2, 20], [2, 3, 30], [3, 4, 40], [4, 5, 50]]
this에 무엇을 바인딩할지입니다.
addEventListner는 this를 받을 때 eventTarget으로 하고 첫번째 인자는 event 객체를 넘겨주도록 정해져 있습니다.
document.body.innerHTML = '<div id="a">abc</div>';
function cbFunc(x) {
console.log(this, x);
// <div id="a">abc</div> PointerEvent
}
document.getElementById('a').addEventListener('click', cbFunc);