하루5분코딩"고차함수"

## 고차함수: 함수를 인자(argument)로 받거나 함수를 리턴하는 함수(인자로 전달되는 함수를 콜백함수 라고함)

✓다른 함수를 인자로 받는경우

function double(num) {
  return num * 2;
}
-------------------------
function doubleNum(func, num) { //doubleNum은 다른함수를 인자로 받는 고차함수이다 .func 은 doubleNum의 콜백함수이다.
  let doubledArr = [];
  return func(num);
}
-------------------------
let output = doubleNum(double, 4);//double 은 함수 doubleNum의 콜백 함수이다.
console.log(output); // -> 8

✓함수를 리턴하는경우

function adder(added) { //adder는 고차함수
  return function (num) {//익명함수 num을 사용하여 added와 더한 값을 리턴한다.
    return num + added;
  };
}
-------------------------------
let output = adder(5)(3);
console.log(output); //8
-------------------------------
const add3 = adder(3);//adder가 리턴하는 함수를 변수에 저장할수있다
output = add3(2);
console.log(output);

✓함수를 인자로 받고, 함수를 리턴하는 경우

function double(num) {
  return num * 2;
}
-----------------------------------
function doubleAdder(added, func) { //doubleAdder 는 고차함수다 , func 는 doubleAdder의 콜백함수다.
  const doubled = func(added);
  return function (num) {
    return num + doubled;
  };
}
-----------------------------------
doubleAdder(5, double)(3); // -> 13 //double 은 함수 doubleAdder의 콜백으로 전달되었다.
-----------------------------------
const addTwice3 = doubleAdder(3, double);
addTwice3(2); // --> 8

좋은 웹페이지 즐겨찾기