変数の基礎知識
変数は、プログラム中で値を保存しておくために使用します。ここでいう値とは、例えばウインドウ内に表示する文字列や、計算に使われる数字のことです。
たいていの言語では、値には文字列や数字などの型があり、使用する前に型を明示的に宣言する必要がありました。JavaScriptでは変数を使うときに型を指定することはありません。簡単にいうと、JavaScriptの変数に型はありません。ですが、値には型があります。
JavaScriptでは代入された値によって、自動的に型が変換されるのです。
変数の宣言
変数の宣言は必ずしも必要ではありません。ただし、使用する前に変数を宣言しておくのがよいプログラミング作法とされています。変数の宣言にはvarステートメントを使用します。
JavaScriptにおける変数は、以下のように宣言を行います。
var answer; //変数answerを定義。型は決まっていません
JavaScriptでは宣言時に変数に値を代入しておくことができます。
//文字型に変換 var a="Doremi"; //数値型に変換 var b = 3.1415; //論理型に変換 var c = false; //nullになります var d = null;
また、演算子カンマ (,) を利用して、複数の変数を同時に宣言することも可能です。例えば、以下のように宣言を行うこともできます。
var a , b;
変数へ値の代入
変数への値の代入には、代入演算子 ( = ) を使います。
変数に値を代入
x = 5;
変数 x に 5 を代入しています。この状態の x は数値の 5 とまったく同じに扱うことができ、後から利用することができます。ここでは変数 x に数値が格納されていますが、その他に文字列や様々なタイプの値を格納することができます。
式
式は、値または変数、関数と演算子の組み合わせによって表現されます。JavaScriptでは、あらゆる表現は値を持ちます。たとえば、
a = 12;
という表現は、aに12という値を代入するという演算だけではなく、12という値をも表現しています。
次の式では、100 に x を足して y に代入しています。
y = 100 + x;
x には 5 が代入されているので、 y には 100 + 5 の結果の値 105 が代入されます。
次のような表現も可能です。
a = ((b = 12) == 12);
この表現では12が代入され、次に12 ==12という論理式が評価されます。結果はtrueが代入され、この表現全体の値はtrueとなります。
型の自動変換
先に述べたように、JavaScriptでは代入された値によって、自動的に型が変換されます。次のように処理が続いていたら、変数answerはコメントに書かれているように変化します。
//変数answerを定義。型は決まっていません。 var answer; //文字列を代入しているので、answerは文字列になります。 answer = "Doremi"; //数値を代入すると、answerは文字列から数値に変化します。 answer = 1;
//数値と文字の演算の結果は、文字列になります answer = answer + "ABCD";
このように変数の扱いが曖昧で、その時々によって変化する言語のことをダイナミック言語といいます。
変数の表記
変数名は英字とアンダースコア( _ )を自由に組み合わせることができます。変数名に数字も使うことができますが、変数名の先頭に数字を使うことは出来ません。
変数名のルール
name_01; # OK _name_01; # OK 0234; # NG。数字で始まる変数名は許されていません
また、大文字と小文字は区別されます。a と A は違う変数として扱われます。
変数名の大文字と小文字
a = 1; # a に 1 を代入 A = 2; # A に 2 を代入。a の値に影響はない
変数の有効範囲
変数には『グローバル変数』と『ローカル変数』があります。どこからでも参照することが可能な変数をグローバル変数、有効な範囲を決められている変数をローカル変数と呼びます。JavaScriptでは、関数内で var を付けて変数宣言すると、その変数はローカル変数となり、var を付けない場合はすべてグローバル変数になります。
ローカル変数とグローバル変数の違い
var a = 5;
var b = 5;
function func () {
var a = 10;
b = 10;
}
alert("a:" + a + " - b:" + b);
func();
alert("a:" + a + " - b:" + b);
スクリプトの実行結果は以下のようになります。
a:5 - b:5
a:5 - b:10
func 内で宣言された変数 a は var を使ってローカル変数ということを明確にしているので、func 外で宣言されているグローバル変数 a
とは別の変数として扱われます。
予約語
JavaScriptでは、次の53種類の識別子が予約語として指定されています。予約語は、変数名、関数名、メソッド名、プロパティ名、オブジェクト名などには使用できません。これらの言葉のいくつかは、
JavaScript で実際に使われているか、将来使用のためにキープされています。
| abstract boolean break byte case catch char class const continue default do double else |
extends false final finally float for function goto if implements import in instanceof |
int interface long native new null package private protected public return short static |
super switch synchronized this throw throws transient true try var void while with |