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 の使い方