定数
初級読み方:ていすう|英語:Constant
値を変更できない変数で、const で宣言するよ。
やさしい説明
定数(ていすう)とは、一度値を入れたら変更できない変数です。JavaScriptでは const キーワードで宣言します。
「この値は絶対に変わらない」と宣言することで、うっかり書き換えてしまうバグを防げます。コードを読む人にも「この値は固定だよ」と伝わります。
現代のJavaScriptでは「まずconstで書く。変更が必要になったらletに変える」が基本ルールです。
具体例・使い方
// 値が変わらないものはconst
const TAX_RATE = 0.1;
const MAX_RETRY = 3;
const API_URL = "https://api.example.com";
// 再代入しようとするとエラー
const name = "太郎";
name = "花子"; // ❌ TypeError: Assignment to constant variable
// 配列やオブジェクトもconstで宣言できる
const colors = ["red", "blue", "green"];
colors.push("yellow"); // ✅ 中身の追加はOK
colors = []; // ❌ 再代入はエラー 定数の命名規則
// パターン1: 通常のcamelCase(最もよく使う)
const apiUrl = "https://api.example.com";
const maxItems = 100;
// パターン2: UPPER_SNAKE_CASE(環境変数・設定値によく使う)
const TAX_RATE = 0.1;
const MAX_RETRY_COUNT = 3;
const DEFAULT_LANGUAGE = "ja";
// パターン3: オブジェクトでまとめる
const Config = {
apiUrl: "https://api.example.com",
timeout: 5000,
maxRetry: 3,
}; プロジェクト全体の設定値は UPPER_SNAKE_CASE でまとめて書くことが多いです。一目で「これは変更されない定数だ」とわかります。
実際のコードでよく使うconst
// DOM要素の参照
const button = document.getElementById("submit-btn");
const form = document.querySelector(".contact-form");
// イベントリスナー
button.addEventListener("click", () => {
console.log("クリックされた");
});
// APIのレスポンスを受け取る(再代入しない)
const response = await fetch(API_URL);
const data = await response.json();
// 分割代入(よく使うパターン)
const { name, email } = data.user; いつ使う?
- API URL・税率・設定値など、プログラム中で変わらない値
- DOM要素の参照(
getElementByIdなどの結果) - 関数(関数も変数に代入できる。基本は const で宣言)
- APIレスポンスの格納(受け取った後に再代入しない場合)
変数の9割はconstで書けます。for ループのカウンターや条件によって変わる値だけ let を使います。
間違いやすいポイント
❌ constのオブジェクト・配列は中身を変更できる
constは「再代入の禁止」であり「中身の変更の禁止」ではありません。完全に変更を防ぎたい場合は Object.freeze() を使います。
const user = { name: "太郎", age: 20 };
user.name = "花子"; // ✅ プロパティ変更はOK
user = {}; // ❌ 再代入はエラー
// 完全に固定したいとき
const frozen = Object.freeze({ TAX: 0.1 });
frozen.TAX = 0.2; // ✅ エラーにはならないが変更されない ❌ constとletを使い分けず全部letにする
「再代入するかもしれないから全部let」という考えはNGです。constにできるものはconstにして、意図しない書き換えを防ぎましょう。
よくある疑問
Q: constとletの違いは?
A: constは再代入不可、letは再代入可能です。迷ったらconstを使いましょう。後で変更が必要になったらletに変えればOKです。
Q: constのオブジェクトの中身は変えられる?
A: はい。const obj = {a: 1}; obj.a = 2; はOKです。obj = {} のような再代入だけがNGです。
Q: 定数名の書き方は?
A: 通常の変数と同じcamelCaseでOKです。環境変数のような固定値はMAX_COUNTのようにSNAKE_CASEで書くこともあります。
関連用語
📖 関連レッスン
レッスンを見る →