JAvascriptカーネル集約33#22.高次機能(高次関数)


高次関数とは、関数をパラメータとして渡したり返したりする関数です.ここで思い出したのは、以前に位置決めされた「Closer」関数と「map,filter,reduce」関数で、いずれも差関数です.(ここでは、パラメータ伝達として実行される関数をコールバック関数と呼ぶ.)
これをパラメータとして渡し、関数の値として返して変数に含めることができるのは、JavaScriptの関数が1次オブジェクト(First class object)と見なされるためです.
🤩ここで、一級オブジェクトとは、他のすべてのオブジェクトの汎用演算をサポートするオブジェクトを指す.
1.無名として表すことができる文字:const func=(x)=>1+x
2.変数またはデータ構造(オブジェクト、配列など)に格納可能:const obj=[func]
3.関数に渡すパラメータ:let func 2=(func)=>func+2
4.戻り値として使用可能:let func 3=()=>戻り関数(){alert("Hi")}
//클로저 형성, 순수함수면서 고차함수
function makeCounter(predicate) {
  let num = 0;
  
  return function () {
    num = predicate(num);
    return num;
  };
}

function increase(n) {
  return ++n;
}

function decrease(n) {
  return --n;
}

const increaser = makeCounter(increase);
console.log(increaser()); // 1
console.log(increaser()); // 2

const decreaser = makeCounter(decrease);
console.log(decreaser()); // -1
console.log(decreaser()); // -2
ここまで読むと、前位置決め(モジュール、map、filter、reduce、純関数など)と重なる部分がたくさんあります.Postingの関数はすべて高次関数であることに気づいた!