この記事では、主にjsクロージャとコールバック、クロージャの概念と特徴を説明し、例を用いて使用手順と方法を分析します
1.クロージャ
クロージャ(closure)はJavaScript言語の難しさです。これは、多くの高度なアプリケーションがクロージャに依存する特徴でもあります。
クロージャには 3 つの特徴があります:
1. 関数のネストされた関数;
2. パラメータと変数はガベージ コレクションによってリサイクルされません。機構も
クロージャは、別の関数のスコープ内の変数にアクセスできる関数を指します。クロージャを作成する最も一般的な方法は、関数内に別の関数を作成し、別の関数を通じてこの関数のローカル変数にアクセスすることです。クロージャを使用する利点と欠点の 1 つは、ローカル変数をメモリ内に常駐させることができ、グローバル変数を回避できることです。グローバル変数はすべてのモジュールで呼び出すことができますが、これは間違いなく悲惨な結果をもたらします。したがって、プライベートなカプセル化されたローカル変数を使用することをお勧めします。一般関数の実行後、ローカルのアクティブ オブジェクトは破棄され、グローバル スコープのみがメモリに保存されます。しかし、閉店の場合は状況が異なります。
例 1://クロージャは、戻り値が別の関数である関数です。
function outer(){ var val = 0; return function (){ val += 1; document.write(val + "<br />"); }; } var outObj = outer(); outObj();//1,执行val += 1后,val还在 outObj();//2 outObj = null;//val 被回收 var outObj1 = outer(); outObj1();//1 outObj1();//2
JavaScript のガベージ コレクションの原則:
(2) 2 つのオブジェクトが相互に参照している場合、 と がサードパーティによって参照されなくなった場合、相互に参照するこれら 2 つのオブジェクトもリサイクルされます。
それでは、クロージャを使用する利点は何でしょうか?クロージャを使用する利点は次のとおりです:
1. 変数がメモリ内に長期間存在することを期待します2. グローバル変数の汚染を回避します
3. 2. コールバック
コールバック関数の原理: 私は今出発し、到着したら通知します。 これは、「出発」(関数の実行) のプロセス中に、「あなた」が実行できる処理です。何でも、そして「到着したら」(関数実行) 完了)後続の処理を「通知」(コールバック)
例 1:
function doSomething(callback){ callback(1,2); } function numberAdd(a,b){ document.write(a+b); } doSomething(numberAdd);//3
例 2:
function Thing(name){ this.name = name; }
Thing.prototype.doSomething = function(callback){ callback(this.name); }; function showName(name){ document.write(name); } var t = new Thing("zhangsan"); t.doSomething(showName);//zhangsan
数値の配列がある場合、並べ替えのためのパブリック メソッドを書きたいのですが、並べ替えメソッド (小さいものから大きいものへ)もちろん、このソート メソッドはコールバックを使用して実装できます。1 つは小さいものから大きいものへのソート、もう 1 つは大きいものからのソートです。個人的には、コールバックは実際のビジネス開発エンジニアに決定権があると考えています。この種の考え方は、私たちが通常遭遇するものとは異なり、少し馴染みのないものです。 、ただし、この種の考え方は、特に非同期プログラミングでメリットが見られます。私の理解が正しいかどうかはわかりません。コールバックの典型的な使用例は次のとおりです。
以上がJavaScriptのクロージャとコールバックの説明例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。