ホームページ >ウェブフロントエンド >jsチュートリアル >jsの閉包原理を理解する
質問? js(JavaScript)のクロージャ原理とその機能とは何ですか?
1. 定義
公式の説明: クロージャは、多くの変数とこれらの変数にバインドされた環境を持つ式 (通常は関数) であり、したがって、これらの変数も式の一部です。
明らかに、うーん。 。 。 。 。何!田舎の人にはドア破壊なんて理解できない! ! !
つまり、編集者の理解は次のとおりです: **** は関数内で定義された関数であり、外部からアクセスできます。 (通常の状況では、ローカル機能にアクセスできません)これは、ズボンを脱いでオナラをするようなものですが、不要ではありません。クロージャーには確かに役割があります。
2. 変更可能な変数を防止します内部変数はアクセス可能な外部では変更できず、変更できないためです。 Safe
3. 関数内の変数を読み取る もう 1 つは、これらの変数の値をメモリに保持することです。
2. 例: (js コード)1. Javascript 言語の特別な点は、グローバル変数を関数内で直接読み取ることができることです。
var n=999;
function f1(){
alert(n);
}
f1(); // 999
2. 一方、関数内のローカル変数は関数の外から読み取ることはできません。
function f1(){
var n=999;
}
alert(n); // error
ここで注意すべき点があります。関数内で変数を宣言する場合は、var コマンドを使用する必要があります。これを使用しない場合、実際にはグローバル変数を宣言していることになります。
function f1(){
n=999;
}
f1();
alert(n); // 999
function f1(){
n=999;
function f2(){
alert(n); // 999
}
}
1) クロージャは関数内の変数をメモリに格納するため、メモリの消費量が非常に多くなります。そのため、クロージャを悪用することはできません。悪用すると、Web ページでパフォーマンスの問題が発生したり、IE でメモリ リークが発生したりする可能性があります。解決策は、関数を終了する前に、未使用のローカル変数をすべて削除することです。
2) クロージャは、親関数内の変数の値を親関数の外で変更します。したがって、親関数をオブジェクトとして使用し、クロージャをそのパブリック メソッドとして使用し、内部変数をプライベート値として使用する場合は、親関数内の変数の値を自由に変更しないように注意する必要があります。
上記は、js の閉包原理の理解です。さらに関連するコンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。