ホーム ›
エラー解決 › JavaScript › Assignment to constant variable
JavaScript ERROR
JavaScript Assignment to constant variable の原因と解決法
constで宣言した変数に再代入しようとすると発生するエラーです。値が変わる変数はletで宣言します。
このエラーメッセージ
Uncaught TypeError: Assignment to constant variable.
原因
- constで宣言した変数に再代入している
- ループ内でカウンタや合計値をconstにしている
- 再代入と、オブジェクトの中身の変更を混同している
❌ エラーになるコード
NG
const count = 0;
count = count + 1; // constは再代入できない
console.log(count);
✅ 修正したコード
OK
let count = 0;
count = count + 1;
console.log(count);
// 再代入しない値はconstのままでOK
const TAX_RATE = 1.1;
console.log(100 * TAX_RATE);
▶ 修正済みコードを実行エディタで開く
progoのJavaScript実行環境(インストール不要・登録不要)でその場で動作を確認できます。
解決のポイント
あとから値を入れ直す変数はletで宣言します。基本は「まずconstで書き、再代入が必要になったところだけlet」がモダンなスタイルです。なお、constのオブジェクトや配列でもobj.name = "x"やarr.push(1)のような中身の変更はエラーになりません。禁止されるのは変数自体への再代入だけです。
よくある質問
const配列にpushできるのはなぜ?
constが固定するのは「変数と値の結びつき」だけで、オブジェクトの中身は対象外だからです。中身も固定したい場合はObject.freeze()を使います。
varを使ってもいい?
varは巻き上げやスコープの問題があるため、新しいコードではconst/letの使用が推奨されます。