変数と定数
変数を用いると、式の値を一時的に保存し、再利用することができます。数学における変数は通常数値ですが、プログラムにおける変数は、文字列等、全ての種類の「値」を格納することができます。
変数の宣言と使用
変数を使用するには、まず変数を宣言する必要があります。
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を用いて宣言された変数はその代入の過程を都度追っていかなければならないためです。