変数 | スコープ |
---|---|
グローバル変数 | プログラム全体 |
ローカル変数 | 関数(!)内 |
-
- 関数内では、グローバル変数よりローカル変数が優先される。
4.3.1 ブロックレベルのスコープはない
-
- ブロックレベルのスコープがない!!!(Javaにはある)
- ローカル変数は関数全体で有効!!
- から、関数の最初で宣言しましょう!!
var hoge = 'hoge'; function showHoge(){ alert(hoge); // 'undefined'。次行のローカル変数hogeは関数全体で有効だから。 var hoge = 'hogehoge'; // 関数全体で有効 alert(hoge); // 'hogehoge'。初期化されているから。 } showHoge();
下記変数iは、forブロック外でも参照可能。for文の前でも変数は有効(初期化はされていないけど)。
alert(i); // エラーにならず、「undefined」が出力される。 for(var i = 0; i < 1; i++){ alert(i); } alert(i); // undefinedにならず、「1」が出力される。
4.3.2 未定義と未代入
alert(x); // 未定義なのでエラーが発生する
var x; alert(x); // 未代入なのでundefinedが表示される。