吉里吉里/tjs2解説

変数のスコープ


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

変数のスコープとは変数の有効な範囲(見える範囲)のことです
変数は宣言されたブロックの中でのみ有効です

var i = 0;
if(i == 0) {
    i = 5;
    var j = 10;    // 変数jを宣言
}
System.inform(i);
System.inform(j);  // ここでエラーが出る
これを実行すると変数iの5は表示されますが、「メンバ "j" が見つかりません」というエラーが出たと思います
変数jはif文の後のブロックの中で宣言されています
よって変数jはそのブロックの中を抜けたら見えなくなってしまいます
ブロックの外で宣言された変数iはどこでも見える変数になります
その変数が見えない場所ではその変数を使う事は出来ません



// for文のスコープのテスト
for(var k = 0; k < 3; k = k + 1) {
    System.inform(k);
}
System.inform(k);//ここでは変数kは見えない
for文の第1節では変数を宣言する事が出来ます
第1節で宣言した変数が見える範囲はループしている間だけです


var i = 0;
while(i < 2) {
    var j = 10;
    if(i == 0) {
        System.inform(j);  // ここでjは見える
    } else {
        System.inform(i);  // グローバル変数iも見える
    }
    i = i + 1;
}
ブロックの中のブロックの中では、それより外のブロックの変数も使う事ができます
また、ブロックの外で宣言された変数をグローバル変数、ブロックの中で宣言された変数をローカル変数といいます
グローバル変数の方が便利な気がするかも知れませんが、変数が多くなると管理が大変になってきます
そこでしか使わない変数はローカル変数にするべきです

更新履歴

取得中です。