ローカル変数

ローカル変数とは、ある一部の領域でのみ定義され、その領域内でのみ有効な変数です。
なんでそんなことをする必要があるのか、と思うかもしれませんが、ローカル変数がないと結構不便なんです。
むしろ、ローカル変数として宣言できるものは極力そうしなければなりません。

ローカル変数の宣言の仕方

ローカル変数の宣言は、変数の前に「var」をつけるだけです。
ローカル変数
1
2
3
function Func(){
  var a = 100;
}
これだけです。
では、実際にどのへんが違うのかを見ていきましょう。

まず最初に、ローカル変数宣言をしない場合を見てみましょう。
ローカル変数でない
1
2
3
4
5
6
7
function Func(){
  a = 100;
}

a = 0;
Func;
Mes(a);
実行すると、「100」とダイアログが出るはずです。
つまり、Funcという関数の中で、aという値が書き換えられたのです。

次に、ローカル変数宣言した場合を見てみましょう。
ローカル変数
1
2
3
4
5
6
7
function Func(){
  var a = 100;
}

a = 0;
Func;
Mes(a);
で、実行すると、「0」とダイアログが出るはずです。
aはローカル変数で、要するにFunc内のaとそうでないaはまったく別の変数ということです。
別の変数なんですから、違う値になって当たり前ですよね?

このように、ローカル変数は、一部だけで有効な変数となります。
上の例では、Funcという関数を抜けたらaは無効になります。
基本的に、{}で囲まれた部分の中でローカル変数を定義します。
ifやforの実行する領域内でももちろんローカル変数を宣言することは可能です。
むしろ、forなどのループ命令では、ローカル変数を使うべきです。
例えば、以下のような文があったとします。
ローカル変数でない
1
2
3
4
5
for(i = 0;i < 5;i = i + 1){
  for(i = 0;i < 3;i = i + 1){
    Mes(i);
  }
}
あ、最初に言っておきますが、この例を実行しないでください
この文は、何処もおかしくないように見えます。
5 × 3回ダイアログを表示するプログラムです。
ですが、for内のfor(2行目のfor)でiは3より大きくならないようになっているため、
条件i < 5が満たされることはありません。
このようなバグを起こさないためにも、ローカル変数を使うべきです。

ローカル変数を使う
1
2
3
4
5
for(i = 0;i < 5;i = i + 1){
  for(var i = 0;i < 3;i = i + 1){
    Mes(i);
  }
}
これなら2行目のforを抜けた時点でvar宣言されたiがなくなるため、i < 5の条件は満たされます。
ローカル変数を使いましょう。
前へ / index / 次へ
プログラム言語「Spinel
Copyright © 2005 - Giemsa All Rights Reserved.
NOTES Software.