var の使い方

作成日: 2007-10-27
最終更新日:

var の使い方を考えます。

C 言語を使っていたときは、 変数の有効期間と可視範囲(スコープ)に絶えず気を使う必要があった。 自動変数は関数の内部でのみ有効なので、 関数の返値として使うときはいつも注意していた。 たとえば関数で配列を返すときには、自動変数で確保した領域を返すと、 関数を抜けたとたん解放されるのでバグを起こす。 動的に malloc で確保すると明示的に free をしなければ使い続けられるが今度は free タイミングに苦労する。 もっとも、このような有効期間と可視範囲についての悩みは C 言語以外のほかの言語でもあると思う。

JavaScript ではこのあたりの事情がどうなっているかどうかを調べた。 var で宣言した変数が、関数の返値として使えるかどうか、また、関数の外から読めないかどうか、確かめた。 更に、var を付けない変数は、関数の外からも読めるかどうか調査した。 結論は次の通り。

    function var1() 
    {
      var a = [1, 2, 3, 4, 5]
      return a
    }
    function var2() 
    {
      var b = new Array(1, 2, 3, 4, 5, 6, 7)
      return b
    }
    function var3() 
    {
      c = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
      return c
    }
    function testvar(f)
    {
       var x 
       x = var1() // 1,2,3,4,5
       alert(x)
       x = var2() // 1,2,3,4,5,6,7
       alert(x)
       x = var3() // 1,2,3,4,5,6,7,8,9,10
       alert(x)
//     alert(a)  // 表示できない
//     alert(b)  // 表示できない
       alert(c)  // 1,2,3,4,5,6,7,8,9,10
    }

まりんきょ学問所JavaScript 手習い > var の使い方


MARUYAMA Satosi