
자바스크립트에서는 함수도 하나의 자료형으로 매개변수로 전달 할 수 있다. 이렇게 매개변수로 전달하는 함수를 콜백 함수라고 한다. callback 함수는 쉽게 설명하면 매개변수로 전달하는 함수라고 할 수 있다. callback 함수는 선언적 함수, 익명 함수 둘다 사용가능하다.
// 선언적 함수(10번 호출) function callTenTimes1(callback){ for(let i=0; i<10; i++){ callback(); } } function testA() { alert("testA 함수 출력"); } callTenTimes1(testA); |
1. function callTenTimes1(callback)은 callTenTimes1 이라는 함수의 매개변수에 callback 함수를 넣는 과정이다.
2. for(let i=0; i<10; i++){ callback(); }은 몇회 반복을 할 것인지에 대한 반복문을 설정해주고 callback 함수를 호출한다.
3. function testA(){ alert("testA 함수 출력"); }은 변수를 선언하는 과정이다.
4. callTenTimes1(testA);는 함수를 호출하는 과정이다.
// 익명 함수(10번 호출) #1 function callTenTimes2(callback){ for(let i=0; i<10; i++){ callback(); } } let testB = function() { alert("testB 함수 출력"); } callTenTimes2(testB); |
// 익명 함수(10번 호출) #2 또는 익명 콜백 함수 function callTenTimes3(callback){ for(let i=0; i<10; i++){ callback(); } } callTenTimes3(function() { alert("testB 함수 출력"); }); |
callback 함수를 사용할 때는 일반적으로 익명 함수 #2 처럼 익명 함수를 바로 호출하는 방식을 주로 사용한다. 이것은 익명 함수를 매개변수에 바로 넣어버리는 형태이고 이것을 익명 callback 함수 라고 부른다.
// n번 호출 function callnTimes(n, callback){ for(let i=0; i<n; i++){ callback(); } } callnTimes(prompt("호출 횟수를 입력하시오."), function(){ alert("호출"); }); |
익명 callback 함수와 prompt 함수를 이용해서 숫자를 입력하면 입력한 숫자만큼 호출이 되도록 작동하게 만든 코드이다.
'프로그래밍 공부 > JavaScript' 카테고리의 다른 글
JavaScript - 자바스크립트 내장 함수 (0) | 2019.12.04 |
---|---|
JavaScript - 함수를 리턴하는 함수 / 클로저 (0) | 2019.12.03 |
JavaScript - 내부 함수 (0) | 2019.12.02 |
JavaScript - 매개변수 / 리턴 값 (0) | 2019.12.02 |
JavaScript - 익명 함수 / 선언적 함수 (0) | 2019.12.02 |