理解に必要な前知識
①再宣言・再代入 >>>>> 「【JavaScript】再宣言・再代入とは?」
②スコープ >>>>> 「【JavaScript】スコープとは?スコープの種類と違い」
var
- 再宣言できる
- 再代入もできる
- 関数スコープは持つが、それ以外は{}内で宣言してもグローバルスコープになる
まず、varは再宣言・再代入ができます。一般的な変数のイメージでOKです。
スコープに関しては、関数の中で定義した場合のみローカルスコープを持ちます。つまり、関数の中で宣言した場合のみ、関数内でしかその変数を使用することができません。
それ以外の場所で宣言した場合、プログラムのどこからでも使用することができます。
let
- 再宣言できない
- 再代入はできる
- 宣言された場所に合わせて、グローバル・ブロック・関数スコープを持つ
let は var とは異なり再宣言はできません。一度宣言した変数は、代入や再代入ができても再宣言はできません。
そして、let は宣言された場所に応じて、すべてのローカルスコープが適用されます。ブロックの中で宣言されればブロックの中でしか使用できないし、関数の中で宣言された場合には関数の中でしか使えません。
const
- 再宣言できない
- 再代入もできない
- 宣言された場所に合わせて、グローバル・ブロック・関数スコープを持つ
const は再宣言・再代入できません。なぜなら、const は変数ではなく定数(固定値)を宣言します。最初に宣言・代入したものから、何をしても変わることはありません。
また、スコープは let と同じく、すべてのローカルスコープが適用されます。ブロックの中で宣言されればブロックの中でしか使用できないし、関数の中で宣言された場合には関数の中でしか使えません。
まとめ(表にしています)
上記お伝えしたものをまとめると以下のようになります。〇は適用され、×は適用されないことを意味します。ご参考にしてください。
※グローバルスコープは省いています。
