PR

【確認用】【JavaScript】let・const・var の違いとは?初心者向けに使い分けを3分で整理

JavaScript

JavaScriptの変数宣言を学ぶと、letconstvar の違いで迷いやすいです。結論からいうと、いま新しく書くコードでは「基本は const、再代入が必要なときだけ letvar は古いコードを読むための知識」と考えれば大丈夫です。

ただし、3つの違いを曖昧なまま使うと、変数のスコープや再宣言の挙動で混乱しやすくなります。この記事では、letconstvar の違い、使い分け、よくあるつまずきを初心者向けに整理します。

迷ったら、まず const で書けないかを考えるのがいちばん実務的です。

スポンサーリンク

結論:let・const・var の違いはここだけ押さえればOK

宣言方法スコープ再代入再宣言使いどころ
var関数スコープできるできる古いコードを読むとき
letブロックスコープできるできない値が変わる変数
constブロックスコープできないできない値を固定したいとき

ポイント 「スコープ」と「再代入できるか」で見分けると整理しやすいです

1. var は古い書き方で、挙動が少し特殊

var は昔からある変数宣言です。いまでも古いJavaScriptコードではよく見かけますが、ブロックスコープを持たないため、初心者が混乱しやすい書き方でもあります。

if (true) {
  var message = "varで宣言";
}

console.log(message); // varで宣言

この例では、if 文の中で宣言した message を外でも使えています。これは var{ } のブロックではなく、関数単位で有効になるためです。

さらに var は同じスコープで再宣言もできるので、意図しない上書きが起きやすくなります。

var count = 1;
var count = 2;

console.log(count); // 2

この柔らかさが便利な場面もありますが、現在の開発ではバグの原因になりやすいため、新しく書くコードではあまり使いません。

2. let は「あとで値が変わる変数」に使う

let はブロックスコープを持つ変数宣言です。つまり、if 文や for 文などの { } の中で宣言すると、その外では使えません。

if (true) {
  let total = 10;
  console.log(total); // 10
}

// console.log(total); // ReferenceError

また、let は再代入できます。

let score = 0;

score = 100;

console.log(score); // 100

そのため、カウントアップや入力値の更新など、途中で値が変わる前提の変数に向いています。

3. const は「基本の選択肢」

constlet と同じくブロックスコープです。違いは、再代入できないことです。

const taxRate = 0.1;

// taxRate = 0.2; // TypeError

一度決めた値を後から変えたくないときに使うことで、「この値は書き換えないつもりです」という意図がコードから伝わります。

ただし、ここで1つだけ勘違いしやすい点があります。const は「中身が完全に不変」という意味ではありません。再代入できないのは変数そのもので、オブジェクトや配列の中身は変更できます。

const user = {
  name: "田中"
};

user.name = "佐藤";

console.log(user.name); // 佐藤

この性質まで知っておくと、const への苦手意識がかなり減ります。

4. どう使い分ければよいのか

実務でも学習でも、使い分けは次のルールでほぼ十分です。

  • 基本は const
  • あとで値を入れ替えるなら let
  • var は古いコードを読むときの知識

たとえば、APIのURLや設定値、固定のメッセージなどは const に向いています。ループ回数や状態の更新などは let が自然です。

変数の有効範囲まで含めて理解したい方は、JavaScriptのスコープの記事もあわせて読むと、より整理しやすくなります。さらに、関数の呼び出し方で意味が変わる this の記事 まで読むと、変数と関数まわりの基礎がつながります。

5. よくあるつまずき

宣言前に使おうとしてエラーになる

letconst は、宣言より前で使うとエラーになります。これは不具合ではなく、安全のための仕様です。

// console.log(price); // ReferenceError
let price = 500;

const なのに中身を書き換えられる

const は再代入を禁止するだけなので、配列の push やオブジェクトのプロパティ変更はできます。ここで「壊れている」と感じやすいですが、仕様どおりです。

var を使っていて思わぬ場所で値が見えてしまう

古いサンプルコードをそのまま写すと、if 文の外でも値が使えてしまい、なぜ動くのか分からなくなることがあります。そういうときはまず「var だからかもしれない」と疑うと解決しやすいです。

関連して学びたい記事

まとめ

まとめ let・const・var の使い分け

  • var は古い書き方で、関数スコープを持つ
  • let は再代入できるブロックスコープの変数
  • const は再代入できないブロックスコープの定数
  • 新しく書くコードでは、基本は const、必要に応じて let を使う
  • var は主に古いコードを読むときに理解しておけば十分

JavaScriptの変数宣言は、最初にきちんと整理しておくと後の学習がかなり楽になります。特にスコープと再代入の違いを押さえておくと、関数やアロー関数、非同期処理を学ぶときにもつまずきにくくなります。

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