宣言(varとletとconstの違い)

  • var
    • 変数を宣言し、その変数をある値に初期化することもできる。
  • let
    • ブロックスコープを持つ局所変数を宣言し、その変数をある値に初期化することもできる。
  • const
    • 読み取り専用の名前付き定数を宣言する。

デモコード

var

example.js
var x = 1; if (x === 1) { var x = 2; console.log(x); } console.log(x);

結果

example.js
> 2 > 2

let

example.js
let x = 1; if (x === 1) { let x = 2; console.log(x); } console.log(x);

結果

example.js
> 2 > 1

const

example.js
const 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.js
if (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文の中でも利用できる。
  • letconstはスコープ外だから利用できない。