基本文法の基礎8▾
データ構造とオブジェクト指向8▾
構文の基本を深める9▾
関数とデータ構造の応用9▾
アルゴリズムとテストの基礎8▾
文字列・数値操作の応用8▾
実務で役立つ機能8▾
定数(constで読み取り専用の値を作る)
このレッスンでは、JavaScriptのconstを使った定数の作り方を学び、値の書き換えを防いで安全なコードを書けるようになることを目標にします。「JavaScript const let 違い」「JavaScript 定数 書き方」で調べている方向けの内容です。
constで作った変数は、あとから値を変更しようとするとエラーになります。「うっかり書き換えてしまう」バグを防げるので、値を変更する予定がないときはletではなくconstを使うのが基本です。実務のコードでは、迷ったらまずconstを使い、あとから値を変える必要が出てきたときだけletに変える、という進め方が推奨されています。
サンプルコードではMAX_SCOREという定数を宣言し、その値を表示したあとで、あえてMAX_SCORE = 200と再代入を試みてエラーを発生させています。try...catchで受け止めているため、エラーメッセージがどう表示されるかを確認できます。定数名を大文字とアンダースコアで書くMAX_SCOREのようなスタイルは、多くの言語で「変更しない値」を表す慣習として使われています。
初心者がよくつまずくのが、constで宣言したオブジェクトや配列の「中身」は変更できてしまう点です。constが禁止しているのは「変数への再代入」だけで、オブジェクトのプロパティや配列の要素を書き換えることは可能です。この違いを理解していないと、「constなのに中身が変わった」と混乱してしまいます。
実際の開発現場では、意図しない書き換えを防ぐための基本ルールとして、多くのチームで「まずconstを使う」という方針が広く定着しています。コードレビューでも、本当は変更されないはずの値がletで宣言されていると指摘されることがあるほど、実務で重視される基礎習慣です。
オブジェクトや配列をconstで宣言していても、より厳密に中身まで変更不可にしたい場合はObject.freeze()を使います。constとObject.freeze()を組み合わせることで、変数の再代入もプロパティの変更も両方防げます。
letで宣言した変数は再代入だけでなく、うっかりループの中で意図せず上書きしてしまうこともあります。こうした事故を防ぐ意味でも「まずconst、必要ならletに変える」という順序で考える習慣が役立ちます。
💡 console.log() の内容が実行結果に表示されます。
消費税率のような、うっかり書き換えたくない値を安全に管理できるようになります。