1. ホーム
  2. Web プログラミング
  3. ジャバスクリプト
  4. javascriptのヒント

JavaScriptのクロージャの説明

2022-01-13 05:40:01

1. クロージャとは?

クロージャ。関数そのものと、その関数が宣言された環境の状態の組み合わせ。
/{br これは、関数が定義された環境で呼び出されなくても、その関数が定義された環境の変数にアクセスできることを意味します。

つまり、クロージャを使えば、データとそのデータを操作する関数を関連付けることができるのです。

例として

$ hg ci

abort: no username supplied (see "hg help config")


これはfooのクロージャの例で、関数が返されるので、この関数はfooの内部スコープであるaをカバーするクロージャを持ち、aを生かしてfooの終わりでリサイクルされないようにしているのです。

2. クロージャができること

2.1) 記憶力

クロージャのニーモニック性とは

クロージャが生成されると、その関数が置かれている環境の状態は常にメモリ内に残り、外側の関数呼び出しの終了時にガベージコレクション機構によって再利用されることはありません。

例として

$ cd .hg


画像

aはクロージャの一部なので、クロージャが作られたときのaの環境の状態はメモリ上に残り、外側の関数呼び出しの終了とともにクリアされないので、foo1が使われると、メモリ上でaの値に1が加算されることになります。
そうすると、foo1とfoo2が生成するクロージャは、互いに影響を及ぼさない別々のクロージャになります。つまり、2回目にfoo2が呼ばれたときには、自分自身の最初の呼び出しの後の結果に1が追加されるわけです。

2.2) プライベート変数のシミュレート

指定された操作によってのみ、変数が操作できることを保証する。

例として :

$ vi hgrc

---------------------------------------------------------------

The contents of hgrc's file.



[paths]

default = http://javaforge.com/hg/HelloWorld




画像

クロージャは、Aが指定されたプラス1およびマイナス1の操作によってのみ操作できることを保証する。

3. クロージャーの注意点

クロージャを乱用すると、メモリの過剰使用によるページのパフォーマンス低下や、メモリリークを引き起こす可能性があります。

概要

この記事はこれで終わりです。この記事があなたの助けになることを願っていますし、BinaryDevelopの他のコンテンツにももっと注目していただければと思います