자바스크립트에서의 함수는 숫자와 마찬가지로 일급객체의 특성을 가진다
👇 일급 객체의 조건
- 함수가 다른 함수의 return 값이 될 수 있다면 가능
- 함수가 다른 함수의 입력 값이 될 수 있다면 가능!
변수로 정의된 함수가 다른 함수에 인자로 전달되어 전달된 함수 내에서 호출하는 것을 callback함수라고 한다
val 자체가 콜백함수는 아니지만, 다른 함수의 입력값으로 전달되서 호출되기에 위의 맥락에서는 callback function이라고 할 수 있다
Array.filter( )의 예제를 봐보자.
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
// 콜백 함수
const result = words.filter(word => word.length > 6);
console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]
인자로 콜백함수를 가지고 있다
arr.filter(callback(element[, index[, array]])[, thisArg])
callback
각 요소를 시험할 함수. true를 반환하면 요소를 유지하고, false를 반환하면 버림
element
처리할 현재 요소
이에 대한 흐름을 정확하게 이해하기 위해 콘솔에 구현해본 결과,
요소로 배열들의 값이 전달됨을 확인할 수 있으며,
callback 함수내에서 조건을 따져서 반환을 시켜보면,
요소 값의 길이가 6보다 큰 요소만 반환되어 출력됨을 확인할 수 있다
이를 축약해서 화살표 함수로 나타내보면 다음과 같다
최종적으로 filter자체를 함수로 따로 구현해보면
아래의 코드처럼 수행된다
네트워크 통신, 사용자의 이벤트 프로그래밍 등에서 콜백함수는 광범위하게 사용되고 있기에 이에 대한 이해는 필수적일 것이다