jQuery のソースコードの冒頭で、コンストラクタ jQuery(selector, context) を定義するのに、わざわざ、無名関数を実行して、その戻り値の関数で定義していたので不思議に思ったが、いろいろ調べていたら、これはクロージャーを作るための普通のテクニックだった。 クロージャーを説明するほど、はっきりとは理解していないので、Wikipedia のクロージャーの記事を読んでほしいが、要するに関数の中で関数を定義し、それを戻り値にして戻してやると、最初の関数で定義された局所変数が、戻り値の関数の中に保存されるという仕組みらしい。この局所変数をレキシカル変数というが、最初の関数が実行された時点で消滅するので、名前空間を汚さないが、戻り値の関数の中ではしっかりと保存されている。 たとえば、クロージャー counter() を作る newCounter() という関数を次のように定義
