자바스크립트에서 함수는 대표적인 일급 객체임
const square = function (num) {
return num * num;
};
//변수 square에 함수가 할당되어 있으며, 함수 호출 연산자인 ()를 사용하여 함수를 호출함
output = square(5);
console.log(output); //25
function double(num) {
return num * 2;
};
function doubleNum(func, num) {
return func(num);
};
//함수 double이 함수 doubleNum의 콜백 함수임
let output = doubleNum(double, 10);
console.log(output); //20
function adder(added) {
return function (num) {
return num + added;
};
};
//함수 adder는 다른 함수를 리턴하는 고차함수임
//adder는 인자 한 개(added)를 입력받아 익명 함수를 리턴함
//리턴되는 익명함수는 인자 한 개(num)를 받아서 added와 더한 값을 리턴함
//함수 호출 연산자인 ()를 사용하여 고차함수를 호출함
let output = adder(10)(3);
console.log(output); //13
//adder가 리턴하는 함수를 변수에 저정하기
const add5 = adder(5);
output = add5(10);
console.log(output); //15
function double(num) {
return num * 2;
};
//함수 double이 고차함수인 doubleAdder의 콜백함수가 됨
function doubleAdder(added, func) {
const doubled = func(added);
return function (num) {
return num + doubled;
};
};
let output = doubleAdder(5, double)(10);
console.log(output); //20
const addTwice10 = doubleAdder(10, double);
addTwice10(2); //22
//filter 메소드의 조건으로써 전달인자로 전달될 함수인 isEven
const isEven = function (num) {
return num % 2 === 0;
};
let arr = [1, 2, 3, 4, 5, 6, 7, 8];
let output = arr.filter(isEven);
console.log(output); //[2, 4, 6, 8]
const double = function (num) {
return num * 2;
};
let arr = [1, 2, 3, 4, 5];
let output = arr.map(double);
console.log(output); //[2, 4, 6, 8, 10]
//초기값을 설정하지 않았을 때
const addAccCur = function (acc, cur) {
return acc + cur;
};
let arr = [1, 2, 3, 4, 5];
let output = arr.reduce(addAccCur);
console.log(output); //15
//초기값을 1로 설정할 때
const addAccCur = function (acc, cur) {
return acc + cur;
};
const initialValue = 1;
let arr = [1, 2, 3, 4, 5];
let output = arr.reduce(addAccCur, initialValue);
console.log(output); //16