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 文でゞも実現できる。*/