자바스크립트에서 함수는 일급 객체이다.(first class citizen)
- 변수에 할당 가능
- 다른 함수의 전달인자로서 전달 가능
- 다른 함수의 결과로서 리턴 가능
👉 함수를 데이터처럼 다룰 수 있다.
const addTwice = function (num) {
return num + num
}
//변수 addTwice에는 함수가 할당되어 있으므로
//일급객체로서 함수 호출 연산자 ()를 사용할 수 있다.
output = addTwice(7)
콜백함수: 다른 함수의 전달인자로 전달되는 함수
function addTwice(num) {
return num + num;
}
function doubleNum(func, num) { //다른 함수를 인자로 받는 고차함수
return func(num); //func는 doubleNum의 콜백함수
}
let output = doubleNum(addTwice, 4); //addTwice는 doubleNum의 콜백함수
console.log(output); //8
function adder(added){ //인자 하나를 받아서 다른 함수 리턴
added = 2 + added;
console.log(added)
return function (num) { //리턴되는 익명함수는 인자 한개를 받아서 added와 더한값 리턴
return num + added;
}
}
adder(5)(3);// 7 / 10
const add3 = adder(3); //adder가 리턴하는 함수 변수에 저장 가능
output = add3(2);
function double(num) {
return num * 2;
}
function doubleAdder(added, func) {
const doubled = func(added);
return function(num) {
return num + doubled;
}
}
doubleAdder(5, double)(3); //13
const addTwice3 = doubleAdder(3, bouble);
addTwice3(2); //8
기본적으로 내장된 고차함수.
필터링되는 기준이 되는 특정 조건은 함수 형태로 필터메서드의 전달인자에 전달됨
기존 배열을 수정하지 않는다.
조건에 따라 필터링을 함!
기존 배열을 수정하지 않는다.
배열의 각 요소가 함수에 의해 다른 요소로 지정됨
배열의 각 요소가 함수에 따라 하나의 형태로 응축됨.
초기값이 주어지지 않으면 첫번째 요소를 초기값으로 지정한다.
arr.reduce(함수, 초기값)
여러 요소를 하나로 합침!