ホームページ >ウェブフロントエンド >jsチュートリアル >jsカリー化の例を詳しく解説
1. 出典
コンピューターサイエンスにおいて、カリー化とは、複数のパラメーターを受け入れる関数を単一のパラメーター (元の関数の最初のパラメーター) を受け入れる関数に変換し、残りのパラメーターを受け入れる関数を返すことです。結果を返す新しい関数。この手法は、モーゼス シュンフィンケルとゴットロブ フレーゲによって発明されましたが、論理学者のハスケル カリーにちなんでクリストファー ストラチーによって命名されました。
2. curring(1)(2)(3)(4)() 結果を 10 にするためにパラメータを追加するにはどうすればよいですか?
1. 実際には、各パラメータを保持する方法を考えて、最終的に呼び出し時にパラメータを蓄積するだけで済みます。 これが私たちの考え方の焦点です。
function keepParams(){var arg = [];return function params(){if(arguments.length === 0){return arg; } Array.prototype.push.apply(arg,arguments); //对apply方法不熟悉的可以去百度下return params; } }var curring = keepParams(); console.log(curring(1)(2)(3)(4)()); // [1, 2, 3, 4]
2. 最初のステップを通じて、次にやりたいことを何でも行うことができます。
加算を実装するにはどうすればよいですか?
3. 基本関数を変更します
function add(){var sum = 0,l = arguments.length;for(var i = 0; i < l; i++){ sum += arguments[i]; }return sum; };function keepParams(fn){var arg = [];return function params(){if(arguments.length === 0){return fn.apply(this,arg); } Array.prototype.push.apply(arg,arguments); //对apply方法不熟悉的可以去百度下return params; } }var curring = keepParams(add);//console.log(curring(1)(2)(3)(4)()); // 10console.log(curring(1)(2,3,4)()); // 10
4. 加算の 3 番目のステップが実装されたので、乗算と除算を行います。一連の操作が完了するまで待ちます。ただし、同じメソッドを連続して 2 回呼び出す場合は、クロージャの使用に注意する必要があります。
引数はメモリに保存されます
console.log(curring(1)(2)(3)(4)()); // 10console.log(curring(1)(2,3,4)()); // 20
以上がjsカリー化の例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。