Hatena::Groupjavascript

lnzntのJavaScript日記 このページをアンテナに追加 RSSフィード

2010年11月08日(月)

スコープとクロージャ(その1)

| 21:41 |  スコープとクロージャ(その1) - lnzntのJavaScript日記 を含むブックマーク はてなブックマーク -  スコープとクロージャ(その1) - lnzntのJavaScript日記  スコープとクロージャ(その1) - lnzntのJavaScript日記 のブックマークコメント

JavaScript はブロックスコープを持っていない。

関数定義の外側の変数にアクセスできる。

var myObject = function () {
  var value = 0;

  return {
    increment : function (inc) {
       value += typeof inc === 'number' ? inc : 1;
    },
    getValue : function () {
       return value;
    }
  };
}();

内側の関数は外側の関数の value を参照する。

また、この参照は外側の関数の寿命が尽きても有効である。

この例の場合、value は myObject に代入されたオブジェクトの increment と getValue メソッドによってのみ操作される。

value をずっと参照し続けるという特性には注意する。

参考書籍