【ていすう】

定数 とは?

💡 一度決めたら動かない「石に刻んだメモ」
📌 このページのポイント
変数と定数の違い 変数(let / var) price = 100 ↓ 変更OK price = 200 値を自由に書き換え可能 定数(const) TAX = 0.10 ✕ 変更不可 TAX = 0.08 一度決めたら変えられない 定数は「絶対に変わらない値」に使い、バグを防ぐ
変数と定数の比較イメージ
ひよこ ひよこ

変数があるのに定数って必要なの?

ペンギン先生 ペンギン先生

変数だと誰かがうっかり値を書き換えてしまう危険がある。消費税率のように「絶対に変えてはいけない値」を定数にしておけば、間違って変更しようとした瞬間にエラーで教えてくれる。安全装置だと思えばいい。

ひよこ ひよこ

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(しっかり立つ)」が語源で、値が動かないことを表す
← 用語集にもどる