今さら聞けないJavaScriptの変数宣言:var, let, const の違いと使い分け

JavaScriptでは、変数の宣言に var、let、const の3種類があります。それぞれの特徴や使い分け方を理解することで、予期しないバグの回避や、より読みやすく保守性の高いコードを書くことができます。本記事では、それぞれの違いと実践的な使い分け方について具体例と共に解説します。

var:関数スコープで巻き上げ(hoisting)される旧式の宣言方法

var はES5以前から存在する変数宣言方法で、現在でも互換性のために使われることがありますが、原則として新規のコードでは非推奨です。

特徴

  • 関数スコープ(ブロックスコープではない)
  • 巻き上げ(hoisting)される:宣言のみがスコープの先頭に移動する
  • 再宣言・再代入が可能

サンプルコード

function example() {
    console.log(a); // undefined(エラーではない)
    var a = 10;
    console.log(a); // 10
}
example();

上記は、var a の宣言が関数の先頭に巻き上げられた結果、最初の console.logundefined になります。


let:ブロックスコープで再代入可能な安全な宣言

let はES6で導入され、var に代わる基本的な変数宣言方法です。

特徴

  • ブロックスコープ{} で囲まれた範囲内)
  • 巻き上げされるが初期化されないため、使用前にエラーになる
  • 再代入は可能、再宣言は不可能

サンプルコード

{
    let x = 5;
    x = 10; // OK
    // let x = 15; // エラー:再宣言不可
    console.log(x); // 10
}

const:定数を定義するための宣言(再代入不可)

const は、値を変更しない変数を宣言する際に使用します。読み取り専用として扱われます。

特徴

  • ブロックスコープ
  • 再代入・再宣言不可
  • オブジェクトや配列のプロパティの変更は可能

サンプルコード

const y = 10;
// y = 20; // エラー:再代入不可

const arr = [1, 2, 3];
arr.push(4); // OK:配列の中身は変更可能
console.log(arr); // [1, 2, 3, 4]

使い分けの指針とベストプラクティス

  • 原則は const を使う:意図しない再代入を防ぐため
  • 値が変わる予定がある場合のみ let を使う
  • var は使わない(レガシーコードのみに)

実践例:

// 状態が変わる変数(例:カウンター)
let count = 0;
count++;

// 変更しない定数(例:設定値)
const MAX_LIMIT = 100;

// 関数スコープが不要な場面で var を使う理由はない

まとめ:var, let, const の違いと使い分け方を理解しよう

宣言方法スコープ巻き上げ再宣言再代入推奨度
var関数スコープあり
letブロックスコープあり(初期化なし)不可
constブロックスコープあり(初期化なし)不可不可

変数宣言の意図を明確にすることで、より堅牢で読みやすいコードを目指しましょう。

Contact

ウェブサイトの制作や運用に関わる
お悩みやご相談
お気軽にお問い合わせ下さい

ウェブサイトと一口に言っても、企業サイトやECサイト、ブログ、SNSなど、その“カタチ”は目的に応じてさまざまであり、構築方法や使用する技術も大きく異なります。株式会社コナックスでは、お客様のご要望やブランドの個性を丁寧に汲み取り、最適なウェブサイトの“カタチ”をご提案いたします。

デザイン、ユーザビリティ、SEO対策はもちろん、コンテンツ制作やマーケティング戦略に至るまで、あらゆるフェーズでお客様のビジネスに寄り添い、成果につながるウェブサイトづくりをサポートいたします。私たちは、ウェブサイトの公開をゴールではなくスタートと捉え、お客様のビジネスの成功に向けて共に伴走してまいります。