JavaScript の let と const の違いを詳細に解説し、具体的な使い分けや最適な使用方法について説明します。
JavaScript において、変数を定義する際には let
や const
を使用します。しかし、どちらをどのような状況で使うべきか明確に理解できていないことも多いでしょう。本記事では、let
と const
の違いと具体的な使い分けについて詳しく解説します。
特性 | let | const |
---|---|---|
再代入 | 可能 | 不可能 |
再宣言 | 不可能 | 不可能 |
ブロックスコープ | あり | あり |
初期化の必要性 | 不要 | 必須 |
let
は、ブロックスコープを持つ変数宣言の方法であり、再代入が可能です。
JAVASCRIPTlet count = 10; console.log(count); // 10 count = 20; console.log(count); // 20 (再代入可能)
JAVASCRIPTfor (let i = 0; i < 5; i++) { console.log(i); // 0, 1, 2, 3, 4 }
const
は、一度定義した変数の再代入を禁止する宣言方法です。
JAVASCRIPTconst name = "John"; console.log(name); // "John" name = "Doe"; // エラー: Assignment to constant variable.
JAVASCRIPTconst TAX_RATE = 0.1; const API_URL = "https://api.example.com/data";
const
でオブジェクトや配列を定義した場合、その 参照(reference) を変更することはできませんが、オブジェクトのプロパティの変更や配列の要素の追加・削除は可能です。
JAVASCRIPTconst user = { name: "Alice", age: 25 }; user.age = 26; // ✅ OK: プロパティの変更は可能 console.log(user); // { name: "Alice", age: 26 } user = { name: "Bob", age: 30 }; // ❌ エラー: Assignment to constant variable.
const
は 変数の参照(アドレス) を固定するため、user
に別のオブジェクトを代入しようとするとエラーになります。user.age = 26
のような操作は可能です。もしオブジェクトのプロパティ変更も防ぎたい場合は、Object.freeze()
を使います。
JAVASCRIPTconst user = Object.freeze({ name: "Alice", age: 25 }); user.age = 26; // ❌ エラー(変更不可) console.log(user.age); // 25(変更されていない)
このように、const
だけではオブジェクトの中身を変更できるため、変更を完全に防ぐには Object.freeze()
を使用する必要があります。
const
でオブジェクトや配列を定義した場合、その参照を変更することはできませんが、オブジェクトのプロパティの変更や配列の要素の追加・削除は可能です。
JAVASCRIPTconst user = { name: "Alice", age: 25 }; user.age = 26; // OK: プロパティの変更は可能 console.log(user); // { name: "Alice", age: 26 } user = { name: "Bob", age: 30 }; // エラー: Assignment to constant variable.
配列の場合も同様です。
JAVASCRIPTconst numbers = [1, 2, 3]; numbers.push(4); // OK: 配列の要素を変更可能 console.log(numbers); // [1, 2, 3, 4]
let
と const
はブロックスコープ(Block Scope) を持ち、変数が {}
の内部でのみ有効になります。
JAVASCRIPT{ let a = 10; const b = 20; console.log(a); // 10 console.log(b); // 20 } console.log(a); // エラー: a is not defined console.log(b); // エラー: b is not defined
var
はブロックスコープを持たないため、外部からもアクセスできてしまいます。
JAVASCRIPT{ var c = 30; } console.log(c); // 30 (エラーにならない!)
これにより、let
や const
は意図しない変数の上書きを防ぐのに役立ちます。
const
var
はブロックスコープがないためバグの原因になりやすいJAVASCRIPTlet total = 0; for (let i = 1; i <= 5; i++) { total += i; } console.log(total); // 15
JAVASCRIPTconst MAX_USERS = 100; const settings = { theme: "dark", language: "ja" };
どちらを使うべきか | 推奨 |
---|---|
変更しない変数 | const |
変更が必要な変数 | let |
基本的に const
をデフォルトで使用し、変更が必要な場合のみ let
を使う のが最適な戦略です。これにより、コードの予測可能性が向上し、バグを減らすことができます。
回 | タイトル | リンク |
---|---|---|
第 1 回 | JavaScript の非同期処理 | 詳 細 |
第 2 回 | JavaScript の配列メソッド | 詳 細 |
第 3 回 | let と const の違いと使い分け | この記事 |
第 4 回 | JavaScript のスプレッド構文 | 詳 細 |
第 5 回 | JavaScript の分割代入 | 詳 細 |
第 6 回 | JavaScript の switch 文と case の使い方 | 詳 細 |
第 7 回 | JavaScript の fetch API の使い方 | 詳 細 |
第 8 回 | JavaScript の組み込みクラスを理解する | 詳 細 |
第 9 回 | JavaScript の DOM の概要と基本操作 | 詳 細 |
第 10 回 | 「JSON」とは? その基本と使い方 | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。