変数
データの保存
式による計算によって、計算結果が返るという事がわかりました
計算結果は即座にalert()に渡されましたが、それだけでは不十分の場合があります
データは、保存しなければ本質的な意味を持ちません
私たちが今まで使っていた数値や文字列は変数に対して定数と呼びます
定数はリテラルとも呼び、変化しない直接的な値を指します
定数に対し、データを保存する役割を持つのが変数です
変数は、数値や文字列でータを格納し、必要になればアクセスすることが可能です
すなわち、変数とはデータが格納されている位置を表す識別子なのです
変数を使うには、まず宣言する必要があります
変数の宣言は var ステートメントで行います
var variable1 [ = value1 ] [, variable2 [ = value2], ...]
variable1 には、変数名を指定します
変数名は基本的に自由につけられますが、基本的な決まりがあります
まず、最初の文字は半角の英文字、またはアンダースコア _ 以外を用いることはできません
2文字目以降はこれに数値を使うことも可能ですが、1文字目に数値を使うことはできないのです
また、変数に予約語と呼ばれる JavaScript で使われるキーワードを使用することはできません
たとえば var は予約語です。これはキーワードなので変数名には使えません
value1 というのは、変数 variable1 に格納するデータです
JavaScript の変数はバリアント型と呼ばれる型にとらわれない変数なので
文字列も、数値も変数の型にとらわれずに代入することができます
value1 は省略することも可能です
このように、変数の宣言と同時に変数に何らかのデータを格納することを
変数の初期化と呼びます
初期化することによって、変数のデータをある程度保証することができます
逆に、初期化しなかった変数は場合によって何が格納されているか判断できません
このような、宣言はされているが値が格納されていない変数には
未定義であることを表す特殊なデータ undefined が格納されています
このデータ型は、未定義であることを意味しています
var variable1 = 0;
var variable2;
alert("variable1 = " + variable1 + "\nvariable2 = " + variable2);
これを実行すると variable2 が undifined 型になっていることが確認できます
また、このように変数をいくつか宣言する場合
一つの var キーワードでもカンマ , を使用することで複数宣言できます
var variable1 , variable2 = 0 , variable3 ...
というような感じになります
初期化するかしないかは、それぞれの変数の特性に合わせて判断します
変数には、文字列を格納することができます
そして、変数はリテラルと同様に式の中で用いることが可能なのです
var variable1 = "Kitty on your lap";
var variable2 = "Tokyo mew mew";
alert(variable1 + "\n" + variable2);
もちろん数値を使った演算に変数を使うことも可能です
変数のデータ型は、格納されている値によって決定されます
代入
変数の値は、プログラムの中で自由に変化させることができます
変数の内容を、指定した値に変更するには値を代入します
代入は、数学的にも理解しやすい = 記号を使用します
ただし、プログラムの代入は必ずもっとも左辺に代入演算子を配置します
変数 = 式
という形になります。当然式は複数でもかまいません
これで、計算した結果などを変数に格納しておくことができます
var variable1 = "Kitty on your lao";
var variable2 = "Tokyo mew mew";
var tmp;
tmp = variable1;
variable1 = variable2;
variable2 = tmp;
alert(variable1 + "\n" + variable2);
これは、二つの変数の内容をいれかえるアルゴリズムを表したプログラムです
variable1 と variable2 の中身を入れ換えてそれを表示します
tmp 変数は一時的に値を格納するためにテンポラリです
また、よく使われる代入演算の一つで複合代入演算子というものがあります
複合代入演算子は、現在の変数の値と相対的な形で値を代入します
変数 OP= 式
OP には、変数に対して行う演算子を使用します
たとえば、変数210加算したい時は += という複合代入演算子を使用します
var variable = 10;
variable += 5;
variable *= 2;
alert(variable);
このプログラムでは、まず変数 variable を 10 で初期化します
そして複合代入演算子で variable に 5 を加算し
さらに 2 を乗算して、その結果を表示します
たとえば、variable += 5 という計算は variable = variable + 5 と同じであると考えられます
しかし、熟練プログラマであれば複合代入演算子を使用するでしょう
インクリメント・デクリメント
変数にだけ使える特殊な演算子で、インクリメントとデクリメントがあります
これらの演算子は、変数の現在の数値に1加算、または減算する目的があります
インクリメントとは、現在の変数の値に1加算することであり
それは variable = variable + 1 という計算に等しいです
このような処理は比較的多く使われるので、この演算子は非常に便利です
インクリメント演算子は変数の前か後に ++を付加します
++variable
variable++
いずれも、variable の内容を 1 加算するという効果があります
変数名の前に ++ を置くインクリメントを前置き演算子
変数名の後に ++ を置くインクリメントを後置き演算子と呼ぶこともあります
var variable = 0;
variable++;
++variable;
alert(variable);
変数 variable は 0 で初期化され、2回インクリメントされているため 2 という数値が表示されます
ところで、前置きと後置き演算子の違いはあるのでしょうか?
実は、これから優先順位が異なるのです
前置きインクリメントはインクリメントしてから値を返す ということに対し
後置きは値を返してからインクリメントします
これらの違いは、多項式の時のインクリメントなどでは影響します
var variable = 0;
alert(variable++);
alert(++variable);
変数 variable は 0 で初期化されています
alert(variable++) は variable の値が alert() メソッドに渡されてからインクリメントされます
そのため、最初のプロンプトは 0 を表示します
次に alert(++variable) の時は、variable の値は先のインクリメントで 1 になっています
さらに前置きインクリメントなので 1 加算してから alert() メソッドに渡されます
そのため、プロンプトは 2 を表示するでしょう
インクリメントとは逆に、値を1減算する処理でデクリメントがあります
デクリメントは変数の前か後に -- 記号を指定します
--variable
variable--
考え方は、インクリメント演算子とまったく同じです
var variable = 5;
--variable;
variable--;
alert(variable);
2回デクリメントしているので、3という数値が表示されます
インクリメントやデクリメントの結果は変数に返るため
他の式とは違い、返された値を代入する必要がないというのも特徴です
var variable1 [ = value1 ] [, variable2...]
変数を宣言します
variable1 - 宣言する変数の名前を指定します
value1 - 変数の初期値を指定します。省略可能です