--- title: 変数 slug: Web/JavaScript/Guide/Variables ---

{{ 英語版章題("Variables") }}

変数

アプリケーションで値を識別する名前として変数を使用します。変数の名前はあるルールに従って付けなくてはなりません。変数の名前は識別子とも呼ばれます。

JavaScript の識別子は必ずアルファベットかアンダースコア (_) かドル記号 ($) から始まらなくてはなりません。続く文字は数字 (0-9) も使えます。JavaScript は大文字・小文字を区別するため、使えるアルファベットは "A" から "Z"(大文字)と "a" から "z"(小文字)です。

JavaScript 1.5 からは å や ü といった ISO 8859-1 や Unicode のアルファベットも識別子に使えます。Unicode エスケープシーケンス のページに列挙されている \uXXXX 形式の Unicode エスケープシーケンスも識別子に使用できます。

Number_hitstemp99_name が使用できる名前の例です。

{{ 英語版章題("Declaring Variables") }}

変数の宣言

2 つの方法で変数を宣言できます。

{{ 英語版章題("Evaluating Variables") }}

変数の評価

var 文を使用し、初期化せずに宣言された変数は undefined の値をとります。

未宣言の変数にアクセスしようとすると、ReferenceError 例外が投げられます。

var a;
print("a の値は " + a); // "a の値は undefined" を出力
print("b の値は " + b); // ReferenceError 例外を投げる

undefined を使うと変数に値が入っているかどうかを確かめられます。以下のコードでは、変数 input には値が代入されておらず、if 文での評価結果は true です。

var input;
if(input === undefined){
  doThis();
} else {
  doThat();
}

Not sure how the following is related to "Variables" section undefined は真偽値コンテキストで使用されると false として振る舞います。例えば以下のコードでは、myArray の要素が未定義であるために関数 myFunction が実行されます。

var myArray = new Array();
if (!myArray[0]) myFunction();

null 変数を評価すると、数値コンテキストにおいては null 値は 0 として振る舞います。また、真偽値コンテキストでは false として振る舞います。

var n = null;
print(n * 32); // prints 0

{{ 英語版章題("Variable Scope") }}

変数のスコープ

変数を関数の外側で宣言すると、その変数はその文書のどのコードからも使用できるようになるため、グローバル(大域)変数と呼ばれます。変数を関数の内部で宣言すると、その変数はその関数の中でしか使用できないため、ローカル(局所)変数と呼ばれます。

JavaScript には ブロック文 のスコープがありません。むしろ、そのブロックを内包しているコードに対して局所化されます。例えば以下のコードは conditionfalse のとき、例外を投げずに 0 が出力されます。

if (condition) {
  var x = 5;
}
print(x ? x : 0);

JavaScript の変数に関する独特なこととして、後に宣言される変数を例外を発生させることなく参照できるというのも挙げられます。

print(x === undefined); // "true" を出力
var x = 3;

{{ 英語版章題("Global Variables") }}

グローバル変数

need links to pages discussing scope chains and the global object グローバル変数は実際にはグローバルオブジェクトのプロパティです。ウェブページではグローバルオブジェクトは window です。そのため、window.variable という構文を使うことでグローバル変数をセットしたり、グローバル変数にアクセスしたりすることができます。

したがって、あるウィンドウやフレームで宣言したグローバル変数に、そのウィンドウやフレームの名前を指定すれば別のウィンドウやフレームからアクセスできます。例えば、phoneNumber という変数を FRAMESET 文書内で宣言すると、子フレームから parent.phoneNumber としてこの変数を参照することができます。

{{ 英語版章題("See Also") }}

関連項目

JavaScript のシャープ変数

{{ PreviousNext("JavaScript/Guide/Values", "JavaScript/Guide/Constants") }}