js의 함수는 일급 객체로서
변수나 데이터안에 담길 수 있다
매개변수로 전달 할 수 있다
반환 값으로 사용할 수 있다
실행도중에 생성될 수 있다
위와 같은 특징을 가지고 있다 이 글의 메인 주제가 될
callback은 매겨변수의 특징을 살려서 적용 되는 부분이다.
콜백함수는 쉽게 말하면 다른 함수에 매개변수로 넘겨준 함수이다.
함수안의 함수라는 개념이라 재귀라고 생각 할 수도 있지만.
라는 차이를 보인다.
function MapFunction(arr) {
function HoF(arr) {
return arr.map((el)=>(el+1))
}
return HoF(arr)
}
arr
이라는 매개변수를 받아오는 함수MapFunction
는
안쪽에 내장함수인 HoF(arr)
을 가지고 있다.
HoF(arr)
은 return
되는 arr의 원소들의 값을 +1증가시켜주는 함수이다.
그렇다면 아래의 함수를 보자.
function MapFunction2(callback, arr) {
let a =[]
return arr.map((el)=>(callback(el)))
}
이 함수는 매개변수로 callback
이라는 함수를 매개변수로써 받아온 callback함수이다.
함수 자체의 내용은 arr.map을 통해 원소들을 callback이 적용된(el)로 바꿔주는 함수라는 소리가 된다.
만약 arr이 [1,2,3,4,5]
이고 위 callback
의 기능이 이것을 문자열로 바꾸는거라면
return
값은 arr=["1", "2", "3", "4", "5"]
이런식이 되는것인 셈이다.