吉里吉里/tjs2解説
変数のスコープ
最終更新:
tjs2
-
view
変数のスコープとは変数の有効な範囲(見える範囲)のことです
変数は宣言されたブロックの中でのみ有効です
変数は宣言されたブロックの中でのみ有効です
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はどこでも見える変数になります
その変数が見えない場所ではその変数を使う事は出来ません
変数jはif文の後のブロックの中で宣言されています
よって変数jはそのブロックの中を抜けたら見えなくなってしまいます
ブロックの外で宣言された変数iはどこでも見える変数になります
その変数が見えない場所ではその変数を使う事は出来ません
// for文のスコープのテスト
for(var k = 0; k < 3; k = k + 1) {
System.inform(k);
}
System.inform(k);//ここでは変数kは見えない
for文の第1節では変数を宣言する事が出来ます
第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;
}
ブロックの中のブロックの中では、それより外のブロックの変数も使う事ができます
また、ブロックの外で宣言された変数をグローバル変数、ブロックの中で宣言された変数をローカル変数といいます
グローバル変数の方が便利な気がするかも知れませんが、変数が多くなると管理が大変になってきます
そこでしか使わない変数はローカル変数にするべきです
また、ブロックの外で宣言された変数をグローバル変数、ブロックの中で宣言された変数をローカル変数といいます
グローバル変数の方が便利な気がするかも知れませんが、変数が多くなると管理が大変になってきます
そこでしか使わない変数はローカル変数にするべきです