【完全保存版】JavaScriptの変数宣言「let」「var」「const」の違いと使い方を徹底解説

プログラミング

3つのキーワード、何が違うの?

JavaScriptを学び始めると、まず立ち止まりがちなのが「変数の宣言方法」です。


特に、letvarconstという3つの宣言キーワードが登場することで、「どれを選べばいいの?」「何がどう違うの?」と疑問に感じたことがある方も多いのではないでしょうか。

この記事では、これら3つのキーワードの特徴や違い、それぞれが適している場面について詳しく解説します。


JavaScript初心者の方はもちろん、「普段はなんとなく使っているけど、実はよく分かっていない…」という中級者の方にも役立つ内容です。

変数宣言とは?|プログラムに“箱”の存在を知らせる仕組み

変数ってどんなもの?

変数とは、データを一時的に保存しておくための「入れ物(箱)」のようなものです。

たとえば、計算結果や文字列、ユーザーが入力した情報などを一時的に保持しておくのに使われます。

「この場所にデータをしまっておきます」とプログラムに伝えるためには、まず“箱の名前”を宣言しなければなりません。


この「箱を作る」と宣言する行為が、いわゆる「変数宣言」です。

なぜ宣言が必要なの?

たとえば、「この資料をキャビネットに入れておいて」と言われても、そのキャビネットがどこにあるのか分からなければ対応できませんよね?


同様に、プログラムも「このデータをこの変数に入れてね」と言うためには、その変数が事前に定義されている必要があるのです。


変数の書き方と基本操作|宣言・代入・初期化の流れ

まずは宣言だけするパターン

変数の宣言は次のように書きます

js
let fruit;

このコードでは、「fruit」という名前の変数を準備しただけで、中身はまだ空っぽです。

値を入れる=代入する

次に、中身(値)を入れてみましょう。これを「代入」と呼びます。

js
fruit = "banana";

これで、「fruit」という箱の中に「banana」という文字列が入ったことになります。

宣言と代入を一行で済ませる初期化

実際の開発では、次のように宣言と代入をまとめて書くことが多いです。

js
let fruit = "banana";

このように最初から値を与えることを「初期化」と言います。
特にconstで変数を宣言する場合は、必ずこのように初期化を行う必要があります。


let / var / const の違いを理解しよう

JavaScriptでは、変数を宣言する方法として varletconst の3種類が用意されています。それぞれの主な違いは以下の通りです。

キーワード 再宣言 再代入 スコープ範囲 特徴
var 可能 可能 グローバル・関数スコープ 古い構文、予期せぬ再宣言によるバグに注意
let 不可 可能 グローバル・ブロックスコープ 柔軟で扱いやすく、汎用的に使われる
const 不可 不可 グローバル・ブロックスコープ 内容が変わらない変数に最適、安全性が高い

スコープとは?|変数が使える“範囲”のこと

スコープとは、変数が有効に使える場所(範囲)のことを指します。

JavaScriptでは、宣言に使うキーワードによってスコープが異なります。

  • var:関数の内部のみで有効(関数スコープ)

  • let / const:波カッコ {} で囲まれたブロック内でのみ有効(ブロックスコープ)

js
if (true) {
let message = "こんにちは";
}
console.log(message); // エラー:messageはスコープ外

このように、letconstで宣言した変数は、ブロックの外からはアクセスできません。


ホスティング(巻き上げ)の違いにも注意しよう

JavaScriptでは、変数宣言がプログラム実行前に自動的にコードの先頭へ移動するような動作をします。

これを「ホスティング(巻き上げ)」と呼びます。

キーワード 巻き上げ後の挙動
var 宣言だけが先に処理され、値はundefined
let / const エラーが発生(ReferenceError)

この動作の違いによって、varは意図しない値が入ってしまう危険があるため注意が必要です。


どう使い分ければいい?基本方針を覚えよう

const:まず最初に検討すべき選択肢

基本的に、変更する必要がない変数には const を使いましょう。


コードの意図が明確になり、うっかり書き換えてしまうようなミスを防げます。

js
const TAX_RATE = 0.1;

let:値が変わる可能性がある場合に使う

letは、後から値を変える可能性がある変数に使います。

特にループ処理などで、変数の値をカウントアップするような場面に最適です。

js
for (let i = 0; i < 3; i++) {
console.log(i);
}

var:現代では使用非推奨

varは古い書き方で、スコープやホスティングの扱いが直感的でないため、基本的には使うべきではありません。


ただし、過去のコードや古い教材では今でも多く登場するため、読み方としての理解は大切です。


よくある疑問にお答えします

Q. 変数は宣言しなくても使えるの?

A. 技術的には宣言せずに変数を使うことも可能ですが、その場合は自動的に「グローバル変数」として扱われ、別の処理に予期せず影響を与えることがあります。


バグの温床になるため、必ず宣言してから使用しましょう。

Q. letは使わないほうがいいの?

A. いいえ、状況によっては積極的に使うべきです。


ただし「変更しない変数」にまで使ってしまうと、意図が不明瞭になる可能性があります。

constと適切に使い分けましょう。

Q. varはもう使わなくていいの?

A. 基本的に新しく書くコードでは使う必要はありません。


ただし、古いコードを読む・直す場面では登場しますので、意味や挙動だけはしっかり理解しておきましょう。


まとめ|変数宣言のベストプラクティス

JavaScriptの変数宣言は、コードの品質に直結する非常に重要な要素です。


適切にキーワードを使い分けることで、意図しないバグを未然に防ぎ、読みやすく保守しやすいコードが実現できます。

constを優先的に使おう(変更しない変数に最適)
letは変化が必要な場合だけ使おう(柔軟に対応可能)
varは原則使わない(古いコードの読み解き用に知識だけ残す)

このルールさえ押さえておけば、変数の扱いで困ることはぐっと減るはずです。
ぜひ明日からのコードに活かしてみてください!

タイトルとURLをコピーしました