JavaScriptの ES2015 (ES6) 以前では変数の宣言はvarを多用していましたが、ES6出現以降にconst が多く使われるようになりました。const, let, varがありますが、多くの場合 constを使い、for文などのカウントアップが必要なときにはlet、そしてvarはほぼ使わないようになっています。
constが出てきたときはconstで宣言した変数は「再宣言・更新ができない」という仕様だったので、どこで使うんだ?と疑問に思いましたが、constで宣言されたオブジェクトのプロパティは更新できるということを知って、多くの場合constを使うということが理解できました。
Contents
再宣言のケース
こちらはvarだけが再宣言できて、letとconstは再宣言できません。varだと長いプログラムを書いている時や久しぶりに追記する時に再宣言してしまいそうですね。やらかしそうです。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//varの場合 var a = 0; var a = 1; console.log(a); //コンソールの出力は1とbなる // letの場合 let b = 0; let b = 1; console.log(b); //エラー;Identifier 'b' has already been declared.と表示される //constの場合 const c = 0; const c = 1; console.log(c); //エラー;Identifier 'c' has already been declared.と表示される |
再代入のケース
宣言をした変数に値を再設定することを再代入と言います。varとletは再代入可能。constは再代入不可能担っています。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// varの場合 var a = 0; a = 1; console.log(a) //1が出力される // letの場合 let b = 0; b = 2; console.log(b) // 2が出力される。 // constの場合(エラーになる) const c = 0; c = 3; //TypeError: Assignment to constant variable.と表示される。 |
constの特徴
constは宣言時に初期化する必要がある。
constはブロックスコープである。
オブジェクトは更新できないが、プロパティは更新できる。