ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptで関数を深さnまで再帰するにはどうすればよいですか?

JavaScriptで関数を深さnまで再帰するにはどうすればよいですか?

WBOY
WBOY転載
2023-09-05 15:01:021320ブラウズ

如何在 JavaScript 中将函数递归到深度 n ?

JavaScript では、関数が 1 つ以上のパラメーターを受け取り、残りのパラメーターを必要とする新しい関数を返す場合、その関数は「カリー化された」とみなされます。カリー化は、既存の関数から新しい関数を作成したり、深さ n の 関数を「カリー化」するために使用できる強力な手法です。

関数参照をキャンセルする必要があるのはなぜですか?

特定の関数を

アンカリーしたい理由はいくつかあります。たとえば、- が必要になるかもしれません。

  • 非カリー化関数を必要とするコンテキストでカリー化関数を使用する

  • カリー化された関数を非カリー化形式に変換して、読み取りやデバッグを容易にします

  • カリー化された関数のパフォーマンスを最適化する

関数参照をキャンセルするにはどうすればよいですか?

方法は 2 つあります

関数のカリー化 -

  • 最初の方法は、「Function.prototype.apply」メソッドを使用することです。

  • 2 番目の方法は、「Function.prototype.call」メソッドを使用することです。

「Function.prototype.apply」メソッドを使用します

"Function.prototype.apply" メソッドは、深さ n の 関数を格納するために使用できます。これを行うには、「this」値とパラメーター配列を "apply" メソッドに渡すだけです。例えば ​​-### リーリー 「Function.prototype.call」メソッドを使用する

"Function.prototype.call"

メソッドを使用して、関数を深さ n までアンカリーすることもできます。 "call" メソッドは

"apply" メソッドに似ていますが、 "this" 値と引数を "call" i> メソッドに渡します。配列としてではなく、個別の引数として。例えば ​​-### リーリー 上の例では、 "call" メソッドを使用して

"curriedAdd"

関数をカリー化しました。ご覧のとおり、"call" メソッドは "apply" メソッドよりも若干冗長ですが、効果は同じです。 「Function.prototype.apply」メソッドを使用する利点は何ですか? 「Function.prototype.apply」メソッドを使用して関数を逆参照することには、いくつかの利点があります -

「apply」メソッドは「call」メソッドより高速です。

  • 「apply」メソッドは、「call」メソッドよりも広くサポートされています。

  • 「apply」メソッドは「call」メソッドよりも簡潔です。

  • 要約すると、カリー化は、既存の関数から新しい関数を作成したり、深さ n の関数を「カリー化」したりするために使用できる強力なテクニックです。

以上がJavaScriptで関数を深さnまで再帰するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。