変数と定数
変数を用いると、式の値を一時的に保存し、再利用することができます。数学における変数は通常数値ですが、プログラムにおける変数は、文字列等、全ての種類の「値」を格納することができます。
変数の宣言と使用
変数を使用するには、まず変数を宣言する必要があります。
let myGreatName;
myGreatName = "Becky Jones";
document.write(myGreatName);
1 行目のlet myGreatName;
で、myGreatName
という名前の変数を宣言しています。let
は、変数宣言のためのキーワードです。
続いて 2 行目では、変数myGreatName
に文字列'Becky Jones'
を代入しています。=
は代入演算子で、左側に指定した変数に対し、右側に指定された値を代入します。
3 行目では、変数myGreatName
が評価され、代入されていた文字列値'Becky Jones'
が画面に表示されます。
変数名の長さに特に制限はありません。どれだけ長くなったとしても、その変数が持っている値を正確に表す命名を心がけましょう。JavaScript の変数は通常、名前に含まれる 2 つ目以降の単語の先頭文字を大文字にすることで、単語の区切りを表します。
上の例では、my great name
という意味を表現して、myGreatName
のように記述しています。
このような命名規則を、キャメルケースと呼びます。
let myBirthday = "2000/01/01",
yourAge = 20;
let
キーワードを用いた変数宣言では、宣言と同時に値を代入(初期化)したり、コンマで区切って複数の変数を同時に宣言したりすることができます。
上記の例では、変数myBirthday
とyourAge
に、それぞれ文字列'2000/01/01'
と、数値20
を代入しています。
変数の性質
変数は、最後に代入された値のみを保持する性質があります。
let mysteriousNumber = 0;
mysteriousNumber = 1;
mysteriousNumber = 2;
document.write(mysteriousNumber);
変数mysteriousNumber
は 3 回代入されていますが、最後に代入された2
が表示されます。
以下の場合はどうでしょうか。
let price = 100;
price = price / 2;
document.write(price);
price = price / 2
はどう解釈されるべきなのでしょうか。演算子の優先順位を考えれば良いですね。
=
(代入演算子)は非常に優先順位の低い演算子です。このため、/
(除算演算子)の部分が先に評価されます。price = price / 2
、price = 100 / 2
、price = 50
のような順番で計算が進められ、最終的にprice
は50
となります。
定数
const
キーワードを用いると、定数を宣言することができます。定数は宣言時のみ値を決定することができ、再代入が許されません。
const taxRatio = 1.1;
// ↓許されない
// taxRatio = 1.2;
JavaScript では、const
を用いた定数宣言がlet
よりも圧倒的に多いです。これは、const
を用いて宣言された定数は宣言文のみからその値を知ることができるのに対し、let
を用いて宣言された変数はその代入の過程を都度追っていかなければならないためです。