- 매개변수로 전달하는 함수
- 매개변수를 전달하는 당시에 호출하는 것이 아니라 함수 내부에서 해당 콜백함수를 사용할 때 호출
일반 객체처럼 모든 연산이 가능한 것을 의미
- 함수의 매개변수로 전달 가능
- 함수 반환 가능
- 할당 명령문
- 동일 비교 대상
- 일급 함수도 일급 객체와 같은 특징을 가짐
- 이러한 특징으로 함수에서 함수를 매개변수로 받을 수 있음
- 인자로 함수를 받거나
- 함수를 반환하는 함수
// 콜백 함수를 별도의 함수로 정의하여 콜백함수의 이름만 인자로 전달하는 방법
const add = (a,b) => a+b;
const divide = (a,b) => a/b;
// calculate는 고차함수
function calculate(a,b, action){ // action은 콜백함수, 여기서 호출되어서 값을 반환하는 것이 아님
return action(a,b); // 여기서 action 호출됨.
}
calculate(1,2,add); // 3
calculate(1,2,divide); // 0.5
- 배열 메서드
- 단순하게 배열 내부의 요소를 사용해 콜백함수를 호출해줌.
const numbers = [2, 235, 57, 78, 23];
numbers.forEach((value, index, array) => // 화살표 함수 사용
console.log(`array : ${array}, ${index} : ${value}`)
);
// array : 2,235,57,78,23, 0 : 2
// array : 2,235,57,78,23, 1 : 235
// array : 2,235,57,78,23, 2 : 57
// array : 2,235,57,78,23, 3 : 78
// array : 2,235,57,78,23, 4 : 23
- 배열 메서드
- 콜백 함수에서 리턴한 값들을 기반으로 새로운 배열 만드는 함수
let numbers = [2, 235, 57, 78, 23];
numbers = numbers.map(value => value * value);
numbers.forEach(console.log); // value, index, array 순으로 출력됨.
// 4 0 (5) [4, 55225, 3249, 6084, 529]
// 55225 1 (5) [4, 55225, 3249, 6084, 529]
// 3249 2 (5) [4, 55225, 3249, 6084, 529]
// 6084 3 (5) [4, 55225, 3249, 6084, 529]
// 529 4 (5) [4, 55225, 3249, 6084, 529]
- 배열 메서드
- 콜백함수에서 리턴하는 값이 true인 것만 모아서 새로운 배열 만듦
const numbers = [0, 1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(value =>
value % 2 === 0);
console.log(`기존 배열 : ${numbers}`); // 기존 배열 : 0,1,2,3,4,5
console.log(`짝수 추출 : ${evenNumbers}`); // 짝수 추출 : 0,2,4