JavaScript Tips: const、let、var の比較
By JoeVu, at: 2023年11月25日18:33
Estimated Reading Time: __READING_TIME__ minutes


JavaScriptにおいて、let
、const
、var
は変数を宣言するために使用されますが、スコープ、ホイスティング、および変更可能性の点でいくつかの違いがあります。
-
var
(変数宣言):
var
で宣言された変数は関数スコープを持ち、そのスコープはその変数が定義されている関数に限定されます。
var
変数は実行フェーズ中にそのスコープの先頭にホイスティングされます。つまり、コード内で宣言される前に変数を使用できます。
var
変数は再宣言および再代入できます。
function variable_declaration() {
var x = 10;
if (true) {
var x = 20; // 上記と同じ変数であり、新しい変数ではありません
console.log(x); // 20を出力
}
console.log(x); // 10ではなく20を出力
} -
let
(ブロックスコープ宣言):
let
で宣言された変数はブロックスコープを持ち、そのスコープはその変数が定義されているブロック(波括弧のペア)に限定されます。
let
変数もホイスティングされますが、インタープリターがコード内の宣言に到達するまで初期化されません。
let
変数は再代入できますが、同じスコープ内で再宣言することはできません。
function variable_declaration() {
let x = 10;
if (true) {
let x = 20; // ブロック外の変数とは異なる変数
console.log(x); // 20を出力
}
console.log(x); // 内部ブロックの影響を受けず、10を出力
} -
const
(定数宣言):
const
で宣言された変数はlet
のようにブロックスコープを持ちます。
const
変数は宣言時に値を割り当てる必要があり、その値を変更または再代入することはできません。
let
と同様に、const
変数は宣言されるまでホイスティングされません。
function variable_declaration() {
const x = 10;
// x = 20; // これはエラーになります。const変数は再代入できません
console.log(x); // 10を出力
}
一般的に、デフォルトでconst
を使用し、変数の値が変更されるとわかっている場合にのみlet
を使用するのが良い習慣です。var
は、その関数スコープの動作とホイスティングの癖のために、現代のJavaScriptではあまり頻繁に使用されません。const
とlet
を使用すると、意図しない再代入を防ぎ、コードの可読性を向上させることができます。