ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptのクロージャの詳しい説明

JavaScriptのクロージャの詳しい説明

零到壹度
零到壹度オリジナル
2018-03-26 14:34:331348ブラウズ

クロージャ: クロージャは、別の関数の変数を参照する関数です。変数は参照されるため、再利用されないため、プライベート変数をカプセル化するために使用できます。

内部関数がそのスコープを定義するデータの外部で参照される場合、内部関数が外部関数にある変数を参照する場合、外部関数が呼び出されるときに、これらの変数はメモリ内にあります。クロージャに必要なため解放されません

変数のスコープ: スコープはグローバルスコープとローカルスコープの2種類のみです

var n=999;
function f1(){
  alert(n);
}
f1(); // 999
function f2(){
  var m=999;
}
alert(m); // error
function f3(){
  i=999; // 函数内部声明变量的时候,一定要使用 var 声明变量,如果不用 var,此时改变量就变成全局变量
}
f3();
alert(i); // 999

ローカル変数を外部から読み取る: 通常の状況では不可能ですが、定義することはできます関数内に別の関数を追加して、内部関数が外部関数の変数にアクセスできるようにします。さらに、外部関数は内部関数変数にアクセスできません。これは、JavaScript 言語の独自の「チェーン スコープ」構造であり、さまざまな場所で使用できます。最大の用途は 2 つあります。1 つは、前述したように関数内の変数を読み取ることです。もう 1 つは、これらの変数の値をメモリに保持することです。メモリに保存され、大量のメモリを消費するため、クロージャを悪用することはできません。そうしないと、Web ページでパフォーマンスの問題が発生し、IE でメモリ リークが発生する可能性があります。解決策は、関数を終了する前に未使用のローカル変数をすべて削除することです

2> クロージャは、親関数の外部で親関数の内部変数の値を変更します。したがって、親関数をオブジェクトとして使用し、クロージャをそのパブリック メソッドとして使用し、内部変数をそのプライベート値として使用する場合は、親関数内の変数の値を安易に変更しないように注意する必要があります。

れぇぇぇぇぇぇぇぇぇぇ

以上がJavaScriptのクロージャの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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