constへの再代入エラーの原因と直し方
constで宣言した変数に再代入しようとしたときに出るエラーです。letやvarと違い、constは一度代入した値を別の値に差し替えることを許しません。
エラーメッセージの読み方
main.js:2
main.js- ファイル名
2- 行番号 — 実際にクラッシュした行
TypeError- 例外クラス — 何が起きたか。ここを検索するのが最短です
Assignment to constant variable.- 内容 — 期待していたもの、または受け付けられなかったもの
このエラーが出る典型パターン
パターン1
1 const total = 10; ^ 2 total = 20; 3 console.log(total);
main.js:2
total = 20;
^
TypeError: Assignment to constant variable.
constで宣言した変数への再代入はTypeErrorになります。値を変える必要がある変数はletで宣言します。
直し方: const を let にします。
広告
広告スロット(未設定)
パターン2
1 const MAX_RETRIES = 3; ^ 2 MAX_RETRIES = 5; 3 console.log(MAX_RETRIES);
main.js:2
MAX_RETRIES = 5;
^
TypeError: Assignment to constant variable.
定数のつもりでもあとから値を変える設計ならconstは使えません。letに変える必要があります。
直し方: const を let にします。
パターン3
1 function createCounter() { 2 const count = 0; ^ 3 count = count + 1; 4 return count; 5 } 6 console.log(createCounter());
main.js:3
count = count + 1;
^
TypeError: Assignment to constant variable.
関数内でカウントアップする変数をconstで宣言すると、2回目の代入でエラーになります。
直し方: const を let にします。
よくある誤解
constは「値そのものを不変にする」という意味だと誤解されがちですが、正しくは「変数への再代入を禁止する」という意味です。オブジェクトや配列の中身を変えることとは別の話です。
まとめ
constへの再代入エラーの原因と直し方は上級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。