Code Fix

上級

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で宣言します。

直し方: constlet にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン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に変える必要があります。

直し方: constlet にします。

この問題を解いてみる →

パターン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回目の代入でエラーになります。

直し方: constlet にします。

この問題を解いてみる →

よくある誤解

constは「値そのものを不変にする」という意味だと誤解されがちですが、正しくは「変数への再代入を禁止する」という意味です。オブジェクトや配列の中身を変えることとは別の話です。

まとめ

constへの再代入エラーの原因と直し方は上級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)