JavaScriptにおけるvar
、let
、const
は、変数を宣言するためのキーワードですが、それぞれにはいくつかの重要な違いがあります。
var
-
関数スコープ:
var
で宣言された変数は、関数スコープ(またはグローバルスコープ)を持ちます。 -
巻き上げ(Hoisting):
var
で宣言された変数は、コード内のどこで宣言されていても関数の先頭に巻き上げられます。 - 再宣言可能: 同じスコープ内で同じ名前の変数を再宣言できます。
function exampleVar() {
console.log(a); // undefined
var a = 5;
console.log(a); // 5
}
let
-
ブロックスコープ:
let
で宣言された変数は、ブロックスコープ({}
で囲まれた範囲)を持ちます。 -
巻き上げなし:
let
で宣言された変数は巻き上げられません。 - 再宣言不可: 同じスコープ内で同じ名前の変数を再宣言することはできません。
function exampleLet() {
// console.log(b); // ReferenceError
let b = 10;
console.log(b); // 10
}
const
-
ブロックスコープ:
const
もlet
と同様にブロックスコープを持ちます。 -
巻き上げなし:
const
で宣言された変数も巻き上げられません。 -
再宣言・再代入不可:
const
で宣言された変数は、再宣言や再代入ができません。 -
初期値必須:
const
で変数を宣言する際には、初期値が必須です。
function exampleConst() {
// console.log(c); // ReferenceError
const c = 15;
console.log(c); // 15
// c = 20; // TypeError
}
まとめ
-
var
は古いコードや特定のケースを除き、現代のJavaScript開発ではあまり推奨されません。 -
let
は再代入が必要な場合に使用します。 -
const
は再代入が不要な場合、つまり値が不変であるべき場合に使用します。
これらの違いを理解することで、変数のスコープや可変性に関するバグを防ぐことができます。