with 文による変数スコープ – JavaScript サンプル

  • i7sm
  • 2013/7/22 2:21
  • タグ:
  • タグはありません
var a = 10;

A: (function ()
{
    console.log(a); // 10
})();
/* 函数の内部で参照された変数が見つけられなかつたときは、外側のスコープを見にゆく。*/

B: (function ()
{
    console.log(a); // undefined
    var a = 20;
    console.log(a); // 20
})();
/* var 文は函数スコープの先頭で実行されるが、代入は記述された箇所で行はれる。
 * つまり、B: は次のやうに書き換へられる。
 */
(function ()
{
    var a = undefined;
    console.log(a); // undefined
    a = 20;
    console.log(a); // 20
})();

C: (function ()
{
    var a = 20;
    console.log(a); // 20
    console.log(window.a); // 10
})();
/* グローバルスコープの変数は window のメンバである。*/

D: (function ()
{
    console.log(a); // 10
    eval('var a = 20;');
    console.log(a); // 20
})();
/* eval() を使ふと、変数を動的に宣言することができる。*/

E: var scope = {};
with(scope)
{
    console.log(a); // 10
    scope.a = 20;
    console.log(a); // 20
}
/* 同じことは with 文でゞも実現できる。*/