変数のスコープ

変数を定義するときには,とにかく var をつけておくのが良さそうだ。

  • 関数の外で定義した変数はグローバル
  • 関数の中で var を使って定義した変数はその関数内のローカル
  • 関数の中で var を使わずに定義した変数はグローバル

関数の中で var を使った場合:

 var v1 = "global v1";
 
 function foo() {
   var v1 = "local v1";
   document.write("in function: ", v1, "<br>");     // => "local v1"
   return "function called."
 }
 
 document.write("before function call: ", v1, "<br>");        // => "global v1"
 foo();
 document.write("avter function call: ", v1, "<br>");         // => "global v1"
 before function call: global v1
 in function: local v1
 avter function call: global v1

関数の中で var を使わなかった場合:

 var v2 = "global v2";
 
 function bar() {
   v2 = "local v2";
   document.write("in function: ", v2, "<br>");
   return "function called."
 }
 
 document.write("before function call: ", v2, "<br>");
 bar();
 document.write("avter function call: ", v2, "<br>");
 before function call: global v2
 in function: local v2
 avter function call: local v2