JavaScriptを学んでいく中で、「変数を宣言する方法にはいくつか種類がある」ということに気づくでしょう。その代表的なものが、var
、let
、const
です。それぞれの違いを理解し、適切な場面で使い分けることが、安定したコードを書くための第一歩です。今回はこれらの違いと、どのように使い分けるべきかについて解説します。
var
の特徴
var
は、JavaScriptの初期から使われている変数宣言方法ですが、いくつか問題点があります。まず、var
には「関数スコープ」という特徴があります。これを簡単に説明すると、var
で宣言された変数は、たとえブロック(if
やfor
など)内であっても、関数全体で有効になってしまうのです。
例えば、以下のコードを見てみましょう。
function testVar() {
if (true) {
var x = 10;
}
console.log(x); // 10が表示される
}
if
文の中でx
を宣言していますが、関数内どこからでもx
にアクセスできてしまいます。これが「関数スコープ」の問題点です。また、var
で宣言した変数は再宣言が可能であるため、予期せぬバグの原因になることもあります。
そのため、var
はあまり推奨されておらず、今ではlet
やconst
が主流です。
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
は古い方法で、スコープに関する問題が多いため、ほとんどの場合let
やconst
を使う方が安全です。let
は値が変更される場合に、const
は値が変更されない場合に使い分けると、より堅牢で読みやすいコードを書くことができます。どの宣言方法を使うかで、コードの可読性やバグの発生を大きく減らせるので、ぜひ適切に使い分けてみましょう。
コメント