これは興味深いことであり、JavaScript オブジェクトの力を示す可能性もあります。やるべきことは、前の記事 で述べたように Hello, World を出力することであり、入力は print('Hello')('World') であり、これがいわゆる高水準関数です。
高階関数
ハイレベルというのは、高度なプログラミング技術を表す難解な用語のように思えますが、最初にそれを見たとき、私もそう思いました。
JavaScript の高階関数
ただし、高階関数は、関数をパラメーターまたは戻り値として受け取る単なる関数です。簡単な例として上記の Hello, World を考えてみましょう。
var Moqi = function(p1){
This.add = 関数 (p2){
return p1 ' ' p2;
};
追加を返す;
};
この関数は次のように使用できます
console.log(Moqi('Hello')('World'));
このプロセスは少しわかりにくいかもしれないので、詳しく見てみましょう。
> モキの種類('こんにちは')
<- "関数"
>モキ(「こんにちは」)
<- 関数 (p2){
return p1 ' ' p2;
}
言い換えれば、Moqi('Hello') は実際には関数 Moqi('Hello')
です。
> var m = Moqi('こんにちは')
>m('世界')
>「ハロー、ワールド」
上記の状況から、高階関数を使用するとコードをより簡潔かつ効率的にすることができます。当然、次のような関数を作成することもできます。
>モキ('こんにちは')('世界')('フォダル')
>「ハロー、ワールドフォダル」
こんな機能があるのですね
var Moqi = function(p1){
戻り関数 (p2){
return 関数(p3){
return p1 ',' p2 ' ' p3;
}
};
};
高階関数の復元
それはますます複雑になっており、高階関数の抽象化を導入する必要があるというシグナルは、繰り返しまたは類似のコードが発生することです。次に、前の関数に段階的に復元します。
var Moqi = function(p1){
This.add = 関数 (p2){
return 関数(p3){
return p1 ',' p2 ' ' p3;
}
};
return this.add;
};
次に、新しい関数を作成します
コードをコピー コードは次のとおりです:
var Moqi = function(p1){
This.add = 関数 (p2){
This.add1 = function(p3){
return p1 ',' p2 ' ' p3;
};
return this.add1;
};
return this.add;
};
JavaScript で call メソッドを使用すると、次のようになります:
var Moqi = function(p1){
var self = this;
関数 fd(p2) {
This.add1 = 関数 (p3) {
return p1 ',' p2 ' ' p3;
};
}
self.add = function (p2){
fd.call(this, p2);
return this.add1;
};
self.add を返します;
};
高階関数の例
上記の例は単なる遊びのためのもので、次の例は実際のアプリケーション用です。
add = function(a,b){
b を返します;
};
関数 math(func,array){
戻り関数(配列[0],配列[1]);
}
console.log(math(add,[1,2]));
> math(add,[1,2])
上の例では、渡された add はパラメーターであり、返されたときは単なる関数です。たとえば、jQuery には
の関数があります。
// CSS およびデータ モジュールで使用されるダッシュをキャメルケースに変換します
// Microsoft はベンダー プレフィックス (#9572) をハンプするのを忘れました
キャメルケース: function( string ) {
戻り値 string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
}、
このように使われることもあり、JS を使いこなすには高階関数がいかに重要であるかがわかります。 。