콜백함수는 간단하게 다른 함수에 매개변수로 넘겨준 함수를 말한다.
매개변수로 넘겨받은 함수는 일단 넘겨받고, 때가 되면 나중에 호출(called back)한다는 것이 콜백함수의 개념이다.
function sayHi(name){
console.log(`${name}입니다.`);
}
function test(callback, name) {
callback(name);
}
test(sayHi,'하리보좋아');
test함수의 인자에 sayHi함수, '하리보좋아' 가 들어간다.
test함수에서 callback함수인 sayHi가 호출된다.
callback함수에는 name에 '하리보좋아'가 들어간다.
sayHi에 console.log('${name}입니다.');가 실행된다.
function test(sayHi, '하리보좋아') {
sayHi('하리보좋아');
}
function sayHi('하리보좋아') {
console.log(하리보좋아입니다.
);
}
문제 : 숫자 배열을 반복하며 각 숫자를 곱한 값을 출력하기
답 : 1 4 9 16 25
const array = [1, 2, 3, 4, 5];
function multiplication(number) {
console.log(number * number);
}
function processAraay(array, callback) {
for (let i = 0; i < array.length; i++) {
let test = callback(array[i]);
console.log(test);
}
}
processAraay(array, multiplication);
processArray 함수 호출 인자 값으로 array, multiplication 함수를 넣어야한다.
for (let i = 0; i < array.length; i++)
array.length 배열의 크기만큼 반복을 시작한다.
test변수에 콜백함수를 출력
callback함수 (multiplication)를 호출하면서 넘겨받은 배열의 i번째 인덱스를 인자값으로 넣는다.
multiplication함수 number를 인자 값으로 받고 number number의 수를 리턴.
그럼 number인 파라미터에 array[i]를 받고 console.log(array[i] array[i])가 되므로 출력값은 [1,4,9,16,25] 가 된다.