宣言(varとletとconstの違い)
var
- 変数を宣言し、その変数をある値に初期化することもできる。
let
- ブロックスコープを持つ局所変数を宣言し、その変数をある値に初期化することもできる。
const
- 読み取り専用の名前付き定数を宣言する。
デモコード
var
example.jsvar x = 1; if (x === 1) { var x = 2; console.log(x); } console.log(x);
結果
example.js> 2 > 2
let
example.jslet x = 1; if (x === 1) { let x = 2; console.log(x); } console.log(x);
結果
example.js> 2 > 1
const
example.jsconst number = 42; try { number = 99; } catch(err) { console.log(err); } console.log(number);
結果
example.js> TypeError: Assignment to constant variable. > 42
つまり3つの違いは…
var
- 再宣言、再代入が可能
let
- 再代入はできるが、再宣言ができない。
const
- 再代入も再宣言もできない。
スコープについて
example.jsif (1) { var x = 'OK'; let y = 'NG'; const z = 'NG'; } console.log(x); console.log(y); console.log(z);
結果
example.js> OK > TypeError: Assignment to constant variable. > TypeError: Assignment to constant variable.
var
はif文の外で宣言した場合、if文の中でも利用できる。let
とconst
はスコープ外だから利用できない。