일급객체(First-class Object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.
const a = function (el) {
return el * el;
}```
function num(el){
return el + el;
};
function newNum(func, el1) {
return func(el1);
}
let result = newNum(num, 3); // 6
function add(num1){
return function (num){
return num1 * num2;
}
}
add(2)(3); // 6
고차함수란 함수를 전달인자(agurement)나 매개변수(parameter)로 받거나 함수를 리턴하는 함수를뜻한다.
function double(num){
return num * 2;
}
function doubleNum(func, num) {
return func(num);
}
let result = doubleNum(double, 9); // 18
function adder(added) {
return function (num) {
return num + added;
};
}
// adder(5)는 함수기 때문에 '()' 사용 가능
let output = adder(5)(3); // -> 8
console.log(output); // -> 8
// adder가 리턴하는 함수를 변수에 저장 가능 (일급객체니까!)
const add3 = adder(3);
output = add3(2);
console.log(output); // -> 5
function double(num) {
return num * 2;
}
function doubleAdder(added, func) {
const doubled = func(added);
return function (num) {
return num + doubled;
};
}
// doubleAdder(5, double)는 함수이므로 함수 호출 기호 '()'를 사용가능
doubleAdder(5, double)(3); // -> 13
// doubleAdder가 리턴하는 함수를 변수에 저장할 수 있습니다. (일급 객체)
const addTwice3 = doubleAdder(3, double);
addTwice3(2); // --> 8
filter( )
배열 각 요소에 대하여 주어진 함수의 결괏값이 true인 요소를 모아 새로운 배열을 반환하는 메서드이며 오직 boolean타입만 반환한다 (조건에 맞는 데이터 분류할 때 사용)
map( )
모든 요소에게 동일한 행동을 그로 인해 나온 값을 새로운 배열로 반환하는 메서드이다 (하나의 데이터를 다른 데이터로 매핑할때 사용)
reduce( )
배열 각 요소에 대하여 reducer 함수를 실행하고 하나의 값으로 반환하는 메서드이며 여러 데이터를 하나로 응축할 때 사용한다 (평균값 구할 때 사용)
🤔 초기값을 설정하지 않으면 배열의 첫번째 값이 초기값으로 설정!