JAvascriptカーネル集約33#22.高次機能(高次関数)
4577 ワード
高次関数とは、関数をパラメータとして渡したり返したりする関数です.ここで思い出したのは、以前に位置決めされた「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")}
これをパラメータとして渡し、関数の値として返して変数に含めることができるのは、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の関数はすべて高次関数であることに気づいた!Reference
この問題について(JAvascriptカーネル集約33#22.高次機能(高次関数)), 我々は、より多くの情報をここで見つけました https://velog.io/@404/자바스크립트-핵심컨샙33-22.-High-Order-Functions고차-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol