콜백 함수

zimablue·2023년 5월 9일

javascript

목록 보기
8/30

제어권을 위임하는 함수입니다.
예를 들면, A 함수의 인자로 콜백함수 B를 전달하면 A가 B의 제어권을 갖게 됩니다.
위임하는 제어권에는 실행 시점, 매개변수, this가 있습니다.
특별한 요청(bind)이 없는 한 A에 미리 정해놓은 방식에 따라 B를 호출합니다.


제어권

실행 시점

어떤 시점에 콜백을 호출하는지입니다.

cb함수의 실행 시점 제어권을 setInterval에게 넘겨줍니다.

let cb = function() {
	console.log(`1초마다 실행`)
}

setInterval(cb, 1000);

매개변수

인자에는 어떤 값들을 지정할지입니다.

콜백 함수를 forEach에 넘기면 콜백함수에 들어오는 매개변수의 내용과 순서는 forEach에 정해진 방식이 됩니다.

  • forEach((currentValue, index, array) => {}, thisArg)
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

this에 무엇을 바인딩할지입니다.

addEventListner는 this를 받을 때 eventTarget으로 하고 첫번째 인자는 event 객체를 넘겨주도록 정해져 있습니다.

  • addEventListener(type, callback, options)
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);

0개의 댓글