JS

定数

初級

読み方:ていすう|英語: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で書くこともあります。

関連用語

  • 変数 — 値を格納する入れ物。constは再代入不可の変数
  • スコープ — constはブロックスコープ(let と同じ)
  • — constに格納できるデータの種類

📖 関連レッスン

レッスンを見る →

関連ブログ記事

⚠️ 関連するエラー

❓ 関連するQ&A