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 サイトの他の関連記事を参照してください。