JavaScript: JavaScriptの変数

最終更新:2026-10-13

変数はデータを格納する箱のようなものです。各箱に名前を付け、データを入れたり出したり、いつでも交換したりできます。

関連する文:function const let var for

1. 変数とは

名前の付いた箱の列を想像してください。「名前」という箱に「太郎」が入り、「年齢」という箱に25が入ります。中身は変わりますが、ラベルは同じまま — それが変数です。

JSでは、宣言キーワード(var / let / const)で変数を作成し、イコール記号で値を代入します:

HTML
<script>
var name = "太郎";
let age = 25;
const PI = 3.14;
</script>

varはES6以前の唯一の変数宣言方法でした。頭を悩ませる2つの動作があります:

  1. 関数スコープ — ifやforブロック内で宣言されたvar変数は外側からもアクセスでき、直感に反します
  2. ホイスティング — var宣言はスコープの先頭に「持ち上げられ」ますが、代入はされません。宣言前に変数を使用してもエラーにならず(値はundefined)、微妙なバグにつながります

この2つの動作により、varはバグの温床となっています。モダンJSでは、varはletとconstに大きく取って代わられました。


2. let — ブロックスコープ、推奨されるデフォルト

letはES6(2015年)で導入され、varの2つの問題を修正しました:

日常開発では、再代入が必要な変数にはletを使いましょう。


3. const — 定数、再代入不可

constもブロックスコープを持ちますが、宣言時に代入が必要で、その後の再代入はできません。

注意:constが制限するのは「再代入」であり、「変更」ではありません。constがオブジェクトや配列を保持している場合、オブジェクトのプロパティや配列の要素は変更できます。変数を別のオブジェクトに向けることはできないだけです。

デフォルトはconstを使い、再代入が必要な場合にletに切り替える — これがベストプラクティスです。


4. 変数の命名ルール


5. 複数の変数を宣言する

カンマで区切って複数の変数を一度に宣言できます:

HTML
<script>
let a = 1, b = 2, c = 3;
</script>

ただし、可読性のため、1行に1つの変数を宣言することが推奨されます。

▶ サンプル:varのホイスティングと関数スコープ

▶ 試してみよう

▶ サンプル:letのブロックスコープ

▶ 試してみよう

▶ サンプル:const定数

▶ 試してみよう

▶ サンプル:var / let / const Comparison

▶ 試してみよう

関連する文:function const let var for

❓ よくある質問

Q constオブジェクトが変更できるなら、constの意味は何ですか?
A constは変数の参照が変わらないことを保証します。personを別のオブジェクトに誤って再代入することはできませんが、既存のオブジェクトプロパティの変更は問題ありません。箱のラベルをロックするようなもの(この箱は常に「太郎の箱」)ですが、中身は自由に入れ替えられます。
Q letとconst、いつどちらを使うべきですか?
A シンプルなルール:「この値は変わりますか?」と自問してください。変わらないならconst、変わるならletを使います。例えば、カウンターはlet、設定定数はconstを使います。実際には、letよりもconstをはるかに多く使うことになります。
Q varを今後も使えますか?
A 技術的には使えますが、使う理由はありません。letとconstはvarの完全なアップグレードで、varが必須でlet/constが動作しない場面はありません。レガシーコードでのvarの理解は問題ありませんが、新しいコードでは常にlet/constを使いましょう。

📖 まとめ

📝 練習問題

  1. 基礎:constであなたの名前を持つ定数SITE_NAMEを宣言し、letでvisitCountを0に設定して、両方の値をページに表示してください。
  2. 中級:ボタンを持つページを作成し、「訪問カウンター」をシミュレートしてください。クリックごとにvisitCountが1増加し、現在の値を表示します。letが再代入を許可し、constが許可しないことに注目してください。
  3. 上級:constの学生オブジェクト{ name: "太郎", scores: [80, 90, 75] }を持つページを作成してください。その後、新しいスコア85を追加し、平均を計算し、名前を「花子」に変更してください — すべてconstを再代入せずに、オブジェクトの内容が変更可能であることを証明してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%