変数宣言のキーワード
モダンなJavaScriptでは変数宣言する場合、「var」,「let」,「const」を使えるようになりました。
旧来よりJavaScriptで変数を宣言する場合は、「var」キーワードが使われてきました。そしてES6から「let」,「const」が使えるようになりました。モダンなJavaScriptでは積極的に「let」,「const」キーワードを使用することでより的確な変数宣言ができるようになります。
ところで今後変数宣言する場合「let」と「const」のどちらを使うべきか選択に悩むかもしれませんが、まず「const」を使いましょう。
「const」の特徴は値が変更不可能ということです。
もし、途中で値を変更したい場合は「let」を使います。
letについて
ブロックスコープで利用できることが letの最大の特徴です。
let は変数のスコープが使用されたブロック、文または式に限定することができます。
if(true){ let id = 'A'; console.log(id + 'inner');// Ainner } console.log(id + 'outer'); // id is not defined
let はvar キーワードとは異なり、グローバル変数を提議するのには向きません。
グローバル変数を宣言するとそれは即ちwindowオブジェクトのプロパティにもなります。
そして、「window.変数名」のような呼び出しをした場合、letで宣言しているとその値は「undefined」になりますので注意が必要です。
ただし、「window」を付けずに、変数名だけで呼び出すことは可能です。
let id = 'A'; console.log(id); // A console.log(window.id); // undefined
また、同じスコープ内での変数の重複を認めない仕様ですからこちらも覚えておいてください。
let id = 'A'; let id = 'B'; // Identifier 'id' has already been declared
constについて
constは定数を宣言します。 let で定義する変数と同じようにブロックスコープです。
if(true){ const id = 'A'; console.log(id + 'inner');// Ainner } console.log(id + 'outer'); // id is not defined
const(定数)の値は、再代入による変更はできませんし、再宣言もできません。
const id = 'A'; id = 'B'; // Assignment to constant variable.
ただし、配列の中身を入れ替える事はできます。
const drink = ['tea','milk','juice']; drink[0] = 'coffee'; console.log(drink);