スポンサーリンク
varは関数スコープで再宣言・再代入が可能で、letはブロックスコープで再宣言が不可ですが、再代入は可能です。
constはブロックスコープで再宣言・再代入いずれもできません。
var,let,constの違い
各違いを表でまとめると以下の通りです。
種類 | 概要 | スコープ | 再宣言 | 再代入 |
---|---|---|---|---|
var | ローカル変数を定義する | 関数 | 〇 | 〇 |
let | ローカル変数を定義する | ブロック | × | 〇 |
const | 定数を定義する | ブロック | × | × |
var変数
- JavaScriptで宣言できるローカル変数
- 宣言された関数内で利用できる(ブロック外から参照可能)
- 再宣言・再代入ともに可能
var再宣言(実行コード)
以下再宣言の確認コードです。
var再宣言(実行結果)
再宣言した値が表示されることを確認できました。
var再代入(実行コード)
以下再代入の確認コードです。
var再代入(実行結果)
再代入した値が表示されることを確認できました。
varスコープ(実行コード)
以下関数スコープの確認コードです。
varスコープ確認(実行結果)
ブロック外から値が参照できることが確認できました。
let変数
- JavaScriptで宣言できるローカル変数
- 宣言されたブロック
{ }
内でのみ利用できる - 再宣言は不可であるが、再代入は可能
let再宣言(実行コード)
以下再宣言の確認コードです。
let再宣言(実行結果)
再宣言がエラーとなることを確認できました。
let再代入(実行コード)
以下再代入の確認コードです。
let再代入(実行結果)
再代入できることを確認できました。
letスコープ(実行コード)
以下ブロックスコープの確認コードです。
letスコープ(実行結果)
ブロック外から値が参照できないことを確認できました。
const定数
- JavaScriptで宣言できる定数
- 宣言されたブロック
{ }
内でのみ利用できる - 再宣言・再代入ともに不可
const再宣言(実行コード)
以下再宣言の確認コードです。
const再宣言(実行結果)
再宣言がエラーとなることを確認できました。
const再代入(実行コード)
以下再代入の確認コードです。
const再代入(実行結果)
再代入がエラーとなることを確認できました。
constスコープ確認(実行コード)
以下ブロックスコープの確認コードです。
constスコープ確認(実行結果)
ブロック外から値が参照できないことを確認できました。
まとめ
- スコープ・再宣言・再代入の自由度は
var > let > const
となる。 var
の再宣言や関数スコープは、意図しないバグを引き起こす場合があるため、基本的にはlet
の利用が推奨される。
以上で本記事の解説を終わります。
よいITライフを!