Javascriptで変数を宣言するとき、理解して var let constを使用しているつもりですが、
改めて、違いを整理したいと思います。
目次
var let const の違いを理解する重要性
ES6(ECMAScript 2015)以前は var が主に使用されていましたが、新しい let や const が導入されたことで、より安全で予測可能なコードを書くことが可能になります。
それぞれの違いを理解し、適切に使い分ける方法を解説します。
var の特徴と問題点
var の基本的な使い方
var x = 10;
console.log(x); // 10var のスコープ(関数スコープ)
var は 関数スコープ を持ちます。
つまり、関数の中で宣言された var はその関数の中でのみ有効です。
function example() {
var a = 100;
console.log(a); // 100
}
console.log(a); // ReferenceError: a is not definedvar の巻き上げ(Hoisting)とは?
var は 巻き上げ(Hoisting) により、宣言がスコープの先頭に移動されます。
console.log(b); // undefined
var b = 20;上記のコードは内部的に以下のように処理されます。
var b;
console.log(b); // undefined
b = 20;var の問題点
- 再宣言が可能
- ブロックスコープがない
var x = 1;
var x = 2; // エラーにならない
console.log(x); // 2let の特徴と使い方
let の基本的な使い方
let y = 10;
console.log(y); // 10ブロックスコープとは?
let は ブロックスコープ を持つため、 {} の中でのみ有効です。
if (true) {
let z = 50;
console.log(z); // 50
}
console.log(z); // ReferenceError: z is not definedvar との違い
- 再宣言不可
- ブロックスコープを持つ
let a = 1;
let a = 2; // SyntaxError: Identifier 'a' has already been declaredconst の特徴と使い方
const の基本的な使い方
const PI = 3.14;
console.log(PI); // 3.14値の再代入ができない
const num = 100;
num = 200; // TypeError: Assignment to constant variable.const でオブジェクトや配列を使う際の注意点
const で定義したオブジェクトや配列は、プロパティの変更は可能 ですが、再代入は不可です。
const person = { name: "Alice" };
person.name = "Bob"; // OK
console.log(person.name); // Bob
person = { name: "Charlie" }; // TypeErrorvarとの違い
- 再宣言不可
- 再代入不可
- ブロックスコープ
const a = 1;
const a = 2; // SyntaxError: Identifier 'a' has already been declaredvar let const の使い分け
どんな場面で let を使うべきか?
ループや一時的な値を管理する場合に適しています。
for (let i = 0; i < 5; i++) {
console.log(i);
}
console.log(i); // ReferenceErrorconst を基本にしつつ、let を補助的に使う考え方
基本的に const を使い、必要な場合のみ let を使う ことが推奨されます。
var を使うべき場面はあるのか?
ほとんどのケースで var は不要です。var を使用すると意図しないバグが発生しやすいため、let や const を推奨します。
比較
| 宣言方法 | スコープ | 再代入 | 再宣言 | 巻き上げ |
| var | 関数スコープ | 可能 | 可能 | あり |
| let | ブロックスコープ | 可能 | 不可 | なし |
| const | ブロックスコープ | 不可 | 不可 | なし |
まとめ
var:古い書き方。巻き上げやスコープの問題があるため非推奨。let:ブロックスコープを持ち、再宣言ができない。const:再代入が不可で、安全に変数を扱える。
基本は const、必要な場合に let を使う。var は非推奨です。
Javascriptを書く際は、ご参考ください。


