【JavaScript】変数の宣言(var, let, const)
変数宣言
プログラミング言語には、文字列や数値などのデータに名前をつけることで、繰り返し利用できるようにする変数という機能があります。
JavaScriptには「これは変数です」という宣言をするキーワードとして、 const、let、varの3つがあります。
varはもっとも古くからある変数宣言のキーワードですが、意図しない動作を作りやすい問題が知られています。 そのためECMAScript 2015で、varの問題を改善するためにconstとletという新しいキーワードが導入されました。
ES2015(ES6)とは
ECMASCriptの6th Editionのこと。ECMAScript 6th editionの6を取ってES6と呼ばれていたが、
2015年に標準化されたため正式名称はES2015になった。ここでconstとletが追加されるようになった経緯があった。
varとletとconst
JavaScriptでは変数の宣言は従来よりvarが使われていたが、ES2015よりletが追加されました。また、同じくES2015よりconstを用いた定数の宣言も可能になった。ECMAScript 2015では、varそのものを改善するのではなく、新しくconstとletというキーワードを追加することで、varの問題を回避できるようにしました。var自体の動作を変更しなかったのは、後方互換性のためです。
var
での変数宣言
var food = 1;
food = 2;
console.log(food); //2がコンソールに出力される。
1行目において変数は省略されているが、varで宣言されたとみなされている。省略した場合はグローバルな変数(どこにあるコードからでも同じように値の読み取りや書き換えが可能なもの。)になるため避ける。
let
での変数宣言
let food = 'soft';
console.log(food); // => foodがコンソールに表示される。
food = 'Soft'; // 再代入する
console.log(food); // => Softが表示される。
let food = 'Soft'; // 再宣言するとエラーになる
letキーワードでは、値の再代入が可能な変数を宣言できます。 letの使い方はconstとほとんど同じです。
次のコードでは、foodという変数を宣言し、初期値を"JavaScript soft"という文字列であることを定義しています。
const
での変数宣言
const food = 'Soft';
console.log(food); // => Softがコンソールに表示される。
food = 'Soft'; // 再代入するとエラーになる
constキーワードでは、再代入できない変数の宣言とその変数が参照する値(初期値)を定義できます。
次のように、constキーワードに続いて変数名を書き、代入演算子(=)の右辺に変数の初期値を書いて変数を定義できます。
#まとめ
let
とconst
の使い分け
再代入が必要な変数のみlet
で宣言し、それ以外はconst
で宣言する。
var
は利用する理由がないため利用しないこと。