[JS]一級関数と高次関数
9244 ワード
#評価と一級
評価
計算コードによる値の作成
一級
価格
const a = 10;
const add10 = a => a + 10;
const r = add10(a);
log(r); //20
#一級関数
JavaScriptでは、関数は1レベルです.
すなわち,JS関数は組合せ性と抽象化のツールである.
const add5 = a => a + 5;
log(add5); //a => a + 5
log(add5(5)); //10
const f1 = () => () => 1;
log(f1()); //() => 1
const f2 = f1();
log(f2); //() => 1
log(f2()); //1
#高次関数
関数を値とする関数.
関数を値として使用すると、関数がパラメータまたは戻り値として使用されることを意味します.
1.受信関数をパラメータとして実行する関数
apply1
const apply1 = f => f(1);
const add2 = a => a + 2;
log(apply1(add2)); //3
log(apply1(a => a - 1)); //0
times
const times = (f, n) => {
let i = -1;
while (++i < n) f(i);
}
times(log, 3); // 0 1 2
times(a => log(a + 10), 3); // 10 11 12
2.関数を作成して返される関数(モジュールを作成して返される関数)
addMaker
:a
記憶関数エンクロージャを作成(b ⇒ a + b
)リターンする関数const addMaker = a => b => a + b;
const add10 = addMaker(10); // -> add10에 b => 10 + b 함수 대입
log(add10(5)); //15
log(add10(10)); //20
Reference
この問題について([JS]一級関数と高次関数), 我々は、より多くの情報をここで見つけました https://velog.io/@young18/JS-일급함수와-고차함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol