ホームページ  >  記事  >  ウェブフロントエンド  >  Javascript クロージャーと関数カリー化の簡単な分析 (グラフィック チュートリアル)

Javascript クロージャーと関数カリー化の簡単な分析 (グラフィック チュートリアル)

亚连
亚连オリジナル
2018-05-21 09:38:141031ブラウズ

この記事では主に Javascript のクロージャとカリー化について紹介します。分かりやすく、困っている友人は参考にしてください。

クロージャとカリー化は両方とも JavaScript で頻繁に使用され、比較的高度なテクニックです。すべての関数型プログラミング言語はこれら 2 つの概念をサポートしているため、JavaScript の関数型プログラミング機能を最大限に活用したい場合は、次のことを理解する必要があります。これら 2 つの概念を詳しく説明します。実際、クロージャーはカリー化に不可欠な基盤です。

1. カリー化の概念

コンピューターサイエンスにおいて、カリー化とは、複数のパラメーターを受け入れる関数を 1 つのパラメーター (元の関数の最初のパラメーター) を受け入れる関数に変換し、受け入れた関数を返すことです。残りのパラメータを取得して結果を返す新しい関数を作成する手法。この手法は、モーゼス シュンフィンケルとゴットロブ フレーゲによって発明されましたが、論理学者のハスケル カリーにちなんでクリストファー ストラチーによって命名されました。直観的には、カリー化は「いくつかのパラメーターを修正すると、残りのパラメーターを受け入れる関数が得られる」と述べています。したがって、2 つの変数を持つ関数 yx の場合、y = 2 が固定されている場合、1 つの変数を持つ関数 2x が得られます。

カリー化とは、関数のいくつかのパラメータを事前に渡して、単純な関数を取得することです。ただし、事前に渡されたパラメータはクロージャに保存されるため、いくつかの独特の特徴があります。例:

var adder = function(num){
  return function(y){
     return num + y;
  }
}
var inc = adder(1);
var dec = adder(-1)

ここでの inc/dec 変数は実際には 2 つの新しい関数であり、次の例の使用法のように括弧を通して呼び出すことができます。カリー化の応用

カリー化の特性に基づいて、より興味深いコードを書くことができます。たとえば、フロントエンド開発では、サーバーからリクエストが返されたときに、特定のページを更新する必要があることがよくあります。要素、つまり部分リフレッシュの概念です。部分更新の使用は非常に簡単ですが、コードが混乱しやすくなります。そして、カリー化を使用すると、コードを大幅に美しくし、保守が容易になります。例を見てみましょう:

//inc, dec现在是两个新的函数,作用是将传入的参数值(+/-)1
print(inc(99));//100
print(dec(101));//100
print(adder(100)(2));//102
print(adder(2)(100));//102

update("newsPanel") の戻り値は関数であり、必要なパラメーターは文字列であるため、Ajax の更新呼び出しでは、成功するとコールバックが渡されます。 newsPanel パネルを更新するためにサーバーから返されたデータ情報は、この方法でコードの可読性と保守性が向上します。

上記は私があなたのためにまとめたものです。

関連記事:

ファイル上のローカル

js

をPHPで読み取る方法は何ですか?

ファイル上のjsの読み取り、書き込み、変更の手順の詳細な説明

String( ) と . toString() の違い (コードと組み合わせると一目瞭然)


以上がJavascript クロージャーと関数カリー化の簡単な分析 (グラフィック チュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。