JavaScriptの変数宣言 var let const の違いと使い分け

Javascriptで変数を宣言するとき、理解して var let constを使用しているつもりですが、
改めて、違いを整理したいと思います。

var let const の違いを理解する重要性

ES6(ECMAScript 2015)以前は var が主に使用されていましたが、新しい letconst が導入されたことで、より安全で予測可能なコードを書くことが可能になります。
それぞれの違いを理解し、適切に使い分ける方法を解説します。

var の特徴と問題点

var の基本的な使い方

var x = 10;
console.log(x); // 10

var のスコープ(関数スコープ)

var関数スコープ を持ちます。
つまり、関数の中で宣言された var はその関数の中でのみ有効です。

function example() {
  var a = 100;
  console.log(a); // 100
}
console.log(a); // ReferenceError: a is not defined

var の巻き上げ(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); // 2

let の特徴と使い方

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 defined

var との違い

  • 再宣言不可
  • ブロックスコープを持つ
let a = 1;
let a = 2; // SyntaxError: Identifier 'a' has already been declared

const の特徴と使い方

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" }; // TypeError

varとの違い

  • 再宣言不可
  • 再代入不可
  • ブロックスコープ
const a = 1;
const a = 2; // SyntaxError: Identifier 'a' has already been declared

var let const の使い分け

どんな場面で let を使うべきか?

ループや一時的な値を管理する場合に適しています。

for (let i = 0; i < 5; i++) {
  console.log(i);
}
console.log(i); // ReferenceError

const を基本にしつつ、let を補助的に使う考え方

基本的に const を使い、必要な場合のみ let を使う ことが推奨されます。

var を使うべき場面はあるのか?

ほとんどのケースで var は不要です。
var を使用すると意図しないバグが発生しやすいため、letconst を推奨します。

比較

宣言方法スコープ再代入再宣言巻き上げ
var関数スコープ可能可能あり
letブロックスコープ可能不可なし
constブロックスコープ不可不可なし

まとめ

  • var:古い書き方。巻き上げやスコープの問題があるため非推奨。
  • let:ブロックスコープを持ち、再宣言ができない。
  • const:再代入が不可で、安全に変数を扱える。

基本は const、必要な場合に let を使う。var は非推奨です。

Javascriptを書く際は、ご参考ください。

お問い合わせ

サービスに関するご相談やご質問などこちらからお問い合わせください。

03-55107260

受付時間 10:00〜17:00