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