ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript での関数型プログラミングの高度なアプリケーション
JavaScript は関数型プログラミングをサポートする言語です。関数型プログラミングの中心的な考え方は、データと関数を分離し、プログラムの不変性と副作用のなさを強調することです。関数型プログラミングには簡潔な構文があり、コードの編成とテストに大きな利点があります。この記事では、JavaScript の関数型プログラミングの高度なアプリケーションをいくつか紹介します。
function add(a, b) { return a + b; }この関数は、典型的な純粋関数です。特定の入力の下でのみ出力があるためです。ただし、一般的な副作用は、関数が配置されている環境に影響を与えることです (一部の変数の値の変更や外部関数の呼び出しなど)。したがって、関数型プログラミングでは、これらの副作用を可能な限り回避する必要があります。つまり、可能な限り純粋な関数を作成する必要があります。
function compose(fn1, fn2) { return function(value) { return fn1(fn2(value)); }; }この関数は新しい関数を返します。この関数は最初に fn2 を呼び出し、次に渡します結果 fn1 をパラメータとして与えます。この関数を使用すると、以下に示すように、複数の関数の組み合わせを実装できます:
function add10(val) { return val + 10; } function square(val) { return val * val; } var result = compose(add10, square)(5); console.log(result); // 35 (5 + 10) * (5 + 10)この例では、compose 関数に add10 と square を与えます。この関数は新しい関数を返します。この新しい関数を追加します。関数。関数には値 5 が渡されます。最終的に、期待した結果が返されました。
function add(a, b, c) { return a + b + c; } add(1, 2, 3); // 6そしてこの関数はカリー化を通じて段階的に実装できます:
function add(a) { return function(b) { return function(c) { return a + b + c; }; }; } add(1)(2)(3); // 6ご覧のとおり、カリー化を通じて、add 関数 After first最初のパラメータを受け取ると、2 番目のパラメータを受け取る関数が返されます。これで、パラメータを 1 つずつ渡して、そのたびに新しい関数を返し、最終的に関数が返されるようになります。
function add(a) { return a + 10; } function multiply(b) { return b * 2; } const addingAndMultiplying = compose(multiply, add); addingAndMultiplying (10); // 40この例では、最初に 2 つの単純な関数 add と multiply を定義し、次に結合関数 compose を使用してそれらを新しい関数に結合します。この新しい関数は、複数の関数を一度に呼び出し、その結果を結合できます。 addingAndMultiplying 関数に 10 を渡すと、最初に add 関数が呼び出され、10 と 10 が加算されて 20 になります。次に、結果を乗算関数に渡します。この関数は 20 を 2 で乗算し、最終結果は 40 になります。
function add(a) { return function(b) { return a + b; }; } function multiply(a) { return function(b) { return a * b; }; } function subtract(a) { return function(b) { return b - a; }; } function divide(a) { return function(b) { return b / a; }; } const discount = compose(subtract(10), multiply(0.1), add(20), divide(2)); discount(50); // 5この例では、まず 4 つの単純な関数の加算、乗算、減算、除算を定義し、関数カレーを使用して変換しました。関数コンビネータ compose を使用すると、すべての操作を関連付けて最終結果を取得できます。この例では、カリー化と合成を使用して複数の単純な関数を 1 つの関数に結合する方法を示します。 結論この記事では、純粋関数、高階関数、カリー化、関数合成、カリー化された関数合成など、JavaScript で関数型プログラミングを実装するための高度なアプリケーションをいくつか紹介しました。これらの概念は、関数の純粋性や不変性など、関数型プログラミングの中核となる考え方に基づいています。これらのテクニックは、より柔軟で再利用可能で、テストが容易なコードを作成するのに役立ちます。関数型プログラミングについてさらに詳しく知りたい場合は、豊富な関数型プログラミング ツールを提供するライブラリである Ramda.js のドキュメントを確認してください。
以上がJavaScript での関数型プログラミングの高度なアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。