JavaScript クロージャの簡単な分析と分析_JavaScript スキルの例

WBOY
リリース: 2016-05-16 18:13:25
オリジナル
772 人が閲覧しました
公式説明
「クロージャ」は、多くの変数を持ち、それらの変数をバインドする環境式 (通常は関数) であるため、これらの変数も環境式の一部です。
一般的な説明
JavaScript の関数はすべてクロージャです。しかし、一般的に言えば、入れ子関数によって生成されたクロージャはより強力であり、ほとんどの場合、これを「クロージャ」と呼びます。次のコードを見てください。
コードをコピーします コードは次のとおりです。

< script type="text/ javascript">



このスクリプトで var c=a() を実行すると、変数 c は実際に関数 b を指します。変数 i は b で使用されます。c() を実行すると、ウィンドウがポップアップして i の値が表示されます。このコードは実際にはクロージャです。なぜでしょうか。なぜなら、関数aの外にある変数cは、関数a内の関数bを参照しているからです。
JavaScript のガベージ コレクション機構
JavaScript の特殊なガベージ コレクション機構により、クロージャーが生成されます。 JavaScript のガベージ コレクション メカニズムの一般的な規則は次のとおりです。
JavaScript では、オブジェクトが参照されなくなった場合、そのオブジェクトは GC によってリサイクルされます。 2 つのオブジェクトが相互に参照し、サードパーティによって参照されなくなった場合、相互に参照している 2 つのオブジェクトもリサイクルされます。上記のスクリプトでは、関数 a が b によって参照され、関数 b が関数 a の外側の c によって参照されるため、関数 a は実行後にリサイクルされません。
クロージャの適用シナリオ
1. 関数内の変数を保護します。上記の例を例にとると、関数 a の変数 i には関数 b からのみアクセスでき、他の手段ではアクセスできないため、i のセキュリティは保護されます。
2. 変数をメモリ内に保持します。上記の例と同様に、クロージャにより、関数 a の i は常にメモリ内に存在するため、c() が実行されるたびに、i は 1 ずつインクリメントされます。
3. 変数のセキュリティを保護して JS プライベート プロパティとプライベート メソッドを実装します (外部からアクセスできません)。次のように、プライベート プロパティとプライベート メソッドはコンストラクターの外部ではアクセスできません:
コードをコピー コードは次のとおりです:

function Constructor(…){
var that = this;
var membername = value;
function membername(…){…}
}
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート