ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript クロージャとは何ですか

JavaScript クロージャとは何ですか

清浅
清浅オリジナル
2019-02-26 10:59:453210ブラウズ

JavaScript クロージャーは、外部関数のスコープ内のすべてのローカル変数、パラメーター、またはその他の内部関数にアクセスできる内部関数です。クロージャを使用する場合は、クロージャを使用するとメモリ消費量が増加し、メモリ リークが発生する可能性があることに注意する必要があります。

JavaScript のクロージャ関数は、JavaScript の重要な知識ポイントであると同時に、難しさでもあります。簡単に言えば、クロージャは、関数がその関数の外側のスコープでアクセスできる変数です。次に記事では、一定の参考効果があるJavaScriptクロージャとは何かについて詳しく紹介しますので、皆さんの参考になれば幸いです。

JavaScript クロージャとは何ですか

#【おすすめコース: JavaScript チュートリアル #】

JavaScript クロージャ

JavaScript では、関数定義と関数式を別の関数 (内部関数) の関数本体に配置することができ、内部関数は外部関数にアクセスできます。の宣言 それらが配置されているすべてのローカル変数、パラメータ、およびその他の内部関数。クロージャは、内部関数の 1 つが外部関数の外部で呼び出されたときに形成されます。

クロージャの特徴

クロージャ関数には次の 3 つの特徴があります

(1) 関数の入れ子関数

(2) 内部関数は外部関数の変数にアクセスできます

(3) パラメーターと変数は再利用されません

例:

<script>
function f1(){
var n=999;
nAdd=function(){
	n+=1
}
function f2(){
 document.write(n);
    }
    return f2;
  }
  var result=f1();
  result(); 
  nAdd();
  result();
	</script>

出力結果は次のとおりです:

JavaScript クロージャとは何ですか

上記のコードは次のように理解できます:

f1 は f2 の親関数であり、 f2 はグローバル変数 (戻り値) に割り当てられるため、f2 は常にメモリ内に存在し、f2 の存在は f1 に依存します。そのため、f1 は常にメモリ内にあり、呼び出し終了後にガベージ コレクションされません (ガベージ)コレクション)、クロージャを形成します。

JavaScript クロージャとは何ですか

閉鎖のメリットとデメリット

利点

(1 ) 関数内の変数のセキュリティを保護し、カプセル化を実装し、変数が他の環境に流れ込んで名前の競合を引き起こすのを防ぐことができます

#(2) 匿名の自己実行関数によりメモリ消費量を削減できます

(3) メモリ内で変数をキャッシュできる

#欠点

(1) 参照されたプライベート変数を破棄できないため、メモリ消費量が増加し、メモリ リークが発生します。

(2) クロージャにはクロスドメイン アクセスが含まれるため、パフォーマンスの低下が発生し、コードの実行速度に影響します

推奨関連記事:

クロージャJavaScript の意味と使い方要約: 以上がこの記事の全内容です。この記事が JavaScript のクロージャ関数の理解に役立つことを願っています。

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

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