【ていすう】
定数 とは?
💡 一度決めたら動かない「石に刻んだメモ」
📌 このページのポイント
- JavaScriptでは const キーワードで宣言し、宣言時に必ず値を代入する
- あとから値を再代入しようとするとエラーになるため、意図しない変更を防げる
- 円周率や消費税率など、プログラム中で変わらない値に使うと安全
- const で宣言したオブジェクトや配列は中身の変更はできるので注意が必要
変数があるのに定数って必要なの?
変数だと誰かがうっかり値を書き換えてしまう危険がある。消費税率のように「絶対に変えてはいけない値」を定数にしておけば、間違って変更しようとした瞬間にエラーで教えてくれる。安全装置だと思えばいい。
const で作った配列の中身を変えられるのはなぜ?
const が守っているのは「入れ物そのものの差し替え」であって、中身の操作ではない。ダンボール箱にラベルを貼って固定しても、箱の中のモノは出し入れできるのと同じイメージ。中身も守りたいなら Object.freeze() を使う。
定数の名前に決まりはある?
慣習として、グローバルな定数は MAX_RETRY_COUNT のように大文字とアンダースコアで書くことが多い。ローカルなスコープの const はふつうの camelCase でOK。チームのルールに合わせよう。
constで宣言してもオブジェクトの中身は変更できるって本当?
本当だよ。JavaScriptのconstは「再代入を禁止する」だけで、オブジェクトや配列の中身の変更は防げないんだ。「const obj = {}; obj.name = "test"」は通る。完全に不変にしたい場合はObject.freeze()を使うけど、これも浅いフリーズで、ネストしたオブジェクトは変更可能なまま。TypeScriptなら「as const」アサーションで型レベルでの不変性を保証できるよ。関数型プログラミングのイミュータブルな考え方が重要になる場面は増えていて、Immer.jsのようなライブラリも人気なんだ。
まとめ:ざっくりこれだけ覚えればOK!
定数って出てきたら「一度決めたら変えられない特別な変数」と思えばだいたいOK!
📖 おまけ:英語の意味
「constant」 = 一定の、不変の
💬 ラテン語の「constare(しっかり立つ)」が語源で、値が動かないことを表す