この記事では、主に JavaScript 関数のカリー化の原理と使用法を紹介し、関数のカリー化の概念、原理、機能を分析し、関数のカリー化の具体的な使用スキルを例の形で提供します。必要な方は、以下を参照してください。この記事の例では、JavaScript 関数のカリー化の原理と使用法について説明します。以下のように、参考として皆さんと共有してください:
カリー化は、複数のパラメーターを受け入れる関数を、単一のパラメーター (アノテーション: 元の関数の最初のパラメーター If 他のパラメーター) を受け入れる関数に変換する変換プロセスです。が必要な場合、残りのパラメータを受け入れて結果を返す新しい関数が返されます。
つまり、一部のパラメーターを固定し、残りのパラメーターを受け入れる関数を返します。これは、部分計算関数とも呼ばれます。その目的は、適用範囲を絞り込み、よりターゲットを絞った関数を作成することです。
例えば、名前、性別、年齢を入力するだけで全員が自己紹介できる機能を作りたいと考えています。ただし、A がこの機能を使用すると、呼び出すたびに名前と性別を入力する必要があるため、実際には年齢だけが変更されます。そのため、A は名前と性別を入力した自分用の自己紹介関数を生成します。性別は固定パラメータです。
関連コードについてはgithubを確認してください。
function curry(fn){ var args = Array.prototype.slice.call(arguments, 1); return function(){ var innerArgs = Array.prototype.slice.call(arguments); var finalArgs = args.concat(innerArgs); return fn.apply(null, finalArgs); }; } function selfIntroduction(name, gender, age){ console.log('hi, I am ' + name + ', ' + age +' years old ' + '. I am a ' + gender + '.'); } var curriedSelfIntroduction = curry(selfIntroduction, 'A', 'man'); curriedSelfIntroduction('12'); curriedSelfIntroduction('13'); curriedSelfIntroduction('14');
もちろん、新しいスコープをバインドするカリー化された関数を書くこともできます。
function curry(fn, context){ var args = Array.prototype.slice.call(arguments, 2); return function(){ var innerArgs = Array.prototype.slice.call(arguments); var finalArgs = args.concat(innerArgs); return fn.apply(context, finalArgs); }; }
: ES6 (ES2015) のプロキシを確認することをお勧めします。これは、関数を前処理する別の方法です。
以上がカリー化の原理をご存知ですか? JavaScript 関数のカリー化の原則と使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。