JavaScript中級講座―Ajaxを学ぶ前の基礎知識

JavaScript 中級講座 ~Ajaxを学ぶ前の基礎知識

JavaScript 中級講座 ~Ajaxを学ぶ前の基礎知識

JavaScriptの場合、変数はブロック変数とグローバル変数しかなく、スタティック変数を作る構文はありません。しかし、「クロージャ(closure)」というテクニックを使うと、スタティック変数のようなことを行うことができます。
JavaScriptクロージャは、以下のような特徴を持った関数です。

  1. 関数の中に関数を入れたものです。
  2. 内側の関数の中で、外側の関数で宣言した変数を使うことができます。
  3. 内側の関数が外側の関数の変数を参照している間は、外側の関数を終了しても、その変数は目盛から消えません。

オブジェクトの中で、イベントハンドラを割り当てる処理を行いたいこともあります。この場合、「this」の扱いが問題になり、クロージャを使って解決することができます。

  1. コンストラクタの中で、thisを変数に代入して保存しておきます。
  2. イベントハンドラの中では、1の変数をthisの代わりに使います。

JavaScriptでWebブラウザ側の処理を記述しようとするときに、文法を理解しようとして苦戦するポイントが「関数自体をオブジェクトとして取り扱う」だという気がしている。
「フォームでボタンを押したら、インプットボックスが追加される」という処理をJavaScriptで記述しようとすると、DOMの要素指定の方法で苦戦をして、要素にイベントハンドラを割り当てるところで、このクロージャという考え方を理解することにまた苦戦をする。別の状況で、JQueryを使おうと思うと「無名関数」の表現を理解するために、更に苦戦をする。
本書の「中級講座」の名前のとおり、ちゃんと理解しようとして躓く部分を解説されていることが勉強になった。