const
- ブロックスコープ({}外では参照できない)
- 再代入禁止
- 値が変わらないのでコードが読みやすい
- オブジェクトなどの値は変更可能
const test = 'hoge';
test = 'fuga'; //エラー
let
- ブロックスコープ
- 再代入可能
- 同名変数を許可しない
- より細かく変数の有効範囲を管理できる
- ループ処理(for文)等、あらかじめ変数の中身が変化することが分かっている場合に使う
let hoge = 'hoge';
hoge = 'hogehoge';
console.log(hoge);//hogehoge
ver
- 同名変数が許可される(バグの可能性あり)
- 関数スコープ
- ES6以前の命令
まとめ
- 変数宣言は基本的に
const
で - 変数への再代入が必要な場合に限り
let
を使う - 原則
var
は使わない
変数 | 再代入 | 再宣言 | 関数内宣言 | ブロック内宣言 |
---|---|---|---|---|
const | × | × | ブロック | ブロック |
let | ○ | × | ブロック | ブロック |
var | ○ | ○ | ブロック | グローバル |
宣言省略 (非strict mode) |
○ | × | グローバル | グローバル |