ホームページ > ウェブフロントエンド > jsチュートリアル > Babel トリックを使用せずに、JavaScript で可変長カリー合計関数を作成するにはどうすればよいですか?

Babel トリックを使用せずに、JavaScript で可変長カリー合計関数を作成するにはどうすればよいですか?

DDD
リリース: 2024-11-28 07:12:09
オリジナル
343 人が閲覧しました

How Can a Variadic Curried Sum Function in JavaScript Be Created Without Using the ' ' Babel Trick?

Plus Babel トリックを使用しない可変個引数のカレー和

JavaScript は次のような動作をする sum 関数を作成できますか?

sum(1)(2) = 3
sum(1)(2)(3) = 6
sum(1)(2)(3)(4) = 10
ログイン後にコピー

これは不可能だと誤解されています。ただし、演​​算子と sum を組み合わせて利用することで実現可能です。

解決策:

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

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

  return v;
}

console.log(+sum(1)(2)(3)(4));
ログイン後にコピー

鍵は、メソッド内の valueOf メソッドと toString メソッドの定義にあります。カレー関数。これらのメソッドは、数値などのプリミティブ値に強制されたときの関数の動作を決定します。これらのメソッド内で n を返すことにより、カリー化関数の内部状態 (現在の合計) が確実に保持されます。

この手法により、バベル トリックに依存せずに可変個引数のカリー化された合計関数を作成できます。

以上がBabel トリックを使用せずに、JavaScript で可変長カリー合計関数を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート