2014年9月5日金曜日

JavaScriptのコードを書こう8 変数の有効範囲(スコープ)について

変数はどこで宣言(var 変数名;)したかによって、有効範囲が変わります。たとえば、

<script>

//関数の外で変数を宣言する
var args ;
var args2;

function exec(){
    //関数の外側で宣言した変数に値を入れる
    args = 5;
}

//ここで定義した関数を使用する
exec();
document.write(args);  //5と表示される

//関数を利用せず、変数に直接値を入れてみる
args2 = 6;
document.write(args2);  //6と表示される
</script>

この様に関数の外側で変数を定義すると、関数の外側ではもちろんのこと、関数内でも変数を使うことができます。一方、

<script>
function exec(){
    //関数の中で変数を宣言する
    var args;
    args = 5;
}

exec();
document.write(args);  //エラーとなる
</script>

関数の中で変数を定義して、関数外で定義した変数の値を表示しようとするとエラーになります。このように、どこで変数を定義したかによって、変数の有効範囲が変わります。この範囲のことをスコープと呼び、関数の外側で定義した変数をグローバル変数、関数の内側で定義した変数をローカル変数と呼びます。

0 件のコメント:

コメントを投稿