Callback 함수


한마디로 "누군가 에게 호출된 함수" 라고 할 수 있겠다

풀어서 말하면  '누군가(다른 함수)에게 (나중에)호출된 (기존의)함수' 라고 할 수 있겠다.


예를 들어 < 참조 : JavaScript sort array : http://www.w3schools.com/jsref/jsref_sort.asp >

a = [3,1,2]; console.log(a);

// [3, 1, 2]


a = [3,1,2]; a.sort(); console.log(a);

// [1, 2, 3]


a = [3,1,2]; function b(v1, v2) {return v1-v2 }; a.sort(b); console.log(a);

// [1, 2, 3] 오름차순


a = [3,1,2]; function b(v1, v2) {return v2-v1 }; a.sort(b); console.log(a);

// [3, 2, 1] 내림차순


a = [3,1,2]; function b(v1, v2) {return 0 }; a.sort(b); console.log(a);

// [3, 1, 2] 정렬안됨


a = [3,1,2]; function b(v1, v2) {console.log('c',v1,v2); return 0 }; a.sort(b); console.log(a);

// c 3 1

// c 1 2

// [3, 1, 2] 정렬안됨

마지막 번 정렬을 확인하게 되면 v1, v2값을 비교해서 비교한 값을 가지고 정렬을 한다는 것을 알 수 있다. 

총 2번 b함수가 호출된것을 알 수 있다. 


배열의 입력같으로 함수를 준다. 

그리고 sort라는 함수의 인자로 다른 함수를 전달 했고 이렇게 전달된 함수를

Callback 함수라고 부르게 된다. 


Callback함수(위에서 function b)를 우리가 만들었지만 우리가 호출한 것이 아닌 a.sort()를 통해 호출 되어졌다.


일회성으로만 줄 경우에는 이름을 굳이 줄 필요가 없다. 따라서 이렇게 구현 가능하다. 

익명함수 라고도 한다. 

a = [3,1,2]; a.sort(function(v1, v2){return v2-v1;}); console.log(a);

// [3, 2, 1] 내림차순

----------------------------------------------------------------------

//callback 함수가 실행되는 과정 예를 들어 설명


function sort(callback){callback();};

sort(function(){console.log('Hello Callback')});

function() --> console.log('Hello Callback');

function()함수가 정의가 됐고 sort의 인자로 전달되고 sort가 실행이된다. 

callback이라는 매개변수를 가진 callback()(콜백함수)를 호출해 실행시킨다.

+ Recent posts