JavaScriptのvar、let、constの違いと使い分け

JavaScript

JavaScriptを学んでいく中で、「変数を宣言する方法にはいくつか種類がある」ということに気づくでしょう。その代表的なものが、varletconstです。それぞれの違いを理解し、適切な場面で使い分けることが、安定したコードを書くための第一歩です。今回はこれらの違いと、どのように使い分けるべきかについて解説します。

varの特徴

varは、JavaScriptの初期から使われている変数宣言方法ですが、いくつか問題点があります。まず、varには「関数スコープ」という特徴があります。これを簡単に説明すると、varで宣言された変数は、たとえブロック(ifforなど)内であっても、関数全体で有効になってしまうのです。

例えば、以下のコードを見てみましょう。

function testVar() {
  if (true) {
    var x = 10;
  }
  console.log(x);  // 10が表示される
}

if文の中でxを宣言していますが、関数内どこからでもxにアクセスできてしまいます。これが「関数スコープ」の問題点です。また、varで宣言した変数は再宣言が可能であるため、予期せぬバグの原因になることもあります。
そのため、varはあまり推奨されておらず、今ではletconstが主流です。

letの特徴

letはES6(ECMAScript 2015)で導入され、varの問題を解決した変数宣言方法です。最大の特徴は「ブロックスコープ」を持っていることです。これにより、letで宣言した変数は、宣言したブロック内でのみ有効となり、外部からはアクセスできません

以下のコードを見てみましょう。

function testLet() {
  if (true) {
    let y = 20;
    console.log(y);  // 20が表示される
  }
  console.log(y);  // エラー: y is not defined
}

letを使うことで、変数が特定のブロック内でのみ有効になり、外部でアクセスできなくなります。これにより、意図しない変数の再利用や、変数が他の部分に影響を与えることを防げます。
また、let再宣言ができないため、同じスコープ内での誤った宣言を防げます。varのような問題を避けられるため、letは汎用的な変数宣言に使うのに適しています。

constの特徴

constもES6で導入された変数宣言方法で、letと同様にブロックスコープを持っていますが、constにはさらに強い制約があります。constで宣言した変数は、再代入ができません。つまり、一度値を設定すると、その後は変更できなくなります。

例えば、以下のコードでは再代入ができません。

const z = 30;
z = 40;  // エラー: Assignment to constant variable.

constは「定数」を宣言するための方法ですが、実際にはオブジェクトや配列の場合でも使えます。ただし、オブジェクトや配列の内容自体は変更できますが、参照(変数が指す場所)を変更することはできません。

const arr = [1, 2, 3];
arr.push(4);  // これは有効
arr = [5, 6, 7];  // エラー: Assignment to constant variable.

constは変更しない値や定数を宣言したいときに使います。例えば、設定値や変更しないデータなどです。

使い分けのポイント

変数宣言使い方
varなるべく使わない
let変数の値が変更されるとき
const変数の値が決して変更されないとき

まとめ

varは古い方法で、スコープに関する問題が多いため、ほとんどの場合letconstを使う方が安全です。letは値が変更される場合に、constは値が変更されない場合に使い分けると、より堅牢で読みやすいコードを書くことができます。どの宣言方法を使うかで、コードの可読性やバグの発生を大きく減らせるので、ぜひ適切に使い分けてみましょう。

コメント

タイトルとURLをコピーしました