ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript のカリー化された合計関数は複数の引数をどのように処理できますか?

JavaScript のカリー化された合計関数は複数の引数をどのように処理できますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-29 06:03:10923ブラウズ

How Can a Curried Sum Function in JavaScript Handle Multiple Arguments?

可変個引数 Sum 関数のカリー化: 内部動作の探索

JavaScript で、複数の引数を受け取り、カリー化された形式で動作する sum 関数を作成します。やり方は乗り越えられない課題のように思えるかもしれません。しかし、カリー化の手法を使えば実際にそれが可能です。

カリー化には、複数の引数を取る関数を、それぞれが 1 つの引数を取る一連の関数に変換することが含まれます。これにより、複数の数値を加算するために連続的に適用できる sum 関数を作成できます。

秘密は関数の定義方法にあります。

function sum(n) {
  var v = function(x) {
    return sum(n + x);
  };

ここでは、sum(n) 1 つの引数 x を受け取り、n 個の x を指定して sum を呼び出した結果を返す関数 v を返します。これにより、複数の呼び出しを連鎖して合計し、それぞれが前の結果に次の数値を加算することができます。

最終結果を処理するには、関数の valueOf メソッドと toString メソッドを定義します。

  v.valueOf = v.toString = function() {
    return n;
  };

これにより、v を値として呼び出したときに、累積合計 n が返されることが保証されます。

最後に、単項プラス演算子 ( ) を使用します。カリー関数の結果をプリミティブ数値に変換します。

console.log(+sum(1)(2)(3)(4));

これにより、期待される結果 10 が出力されます。

したがって、最初は直観に反するように思えるかもしれませんが、可変個引数のカリー関数を作成します。 JavaScript の sum 関数は、カリー化の原則と関数プロパティの賢い操作を使用して可能です。

以上がJavaScript のカリー化された合計関数は複数の引数をどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:メタタワー次の記事:メタタワー