サンプルコード
JavaScriptのAssignment to constant variable エラーは、以下のようなコードで発生します。
const name = 'taro';
console.log(name); // taro
name = 'mike';
// Uncaught TypeError: Assignment to constant variable
Assignment to constant variable エラーの原因
まずは、エラー文を日本語に翻訳してみましょう。
Uncaught TypeError: Assignment to constant variable
↓翻訳にかける
キャッチされていない TypeError: 定数変数への代入
「定数に代入されているよ〜 」
ということみたいです。
JavaScriptでは、constで宣言した変数(定数)には、代入を行うことができません。
サンプルコードでは、定数nameに対してconsole.log()の後に代入しようとしているため、エラーが出てしまっているということですね。
Assignment to constant variable エラーの対応策
JavaScriptには、const以外にletという変数宣言の仕方があります。
letで宣言した変数には代入することができるため、変数を使い回すなどして代入を行いたい場合にはletを使って変数を宣言するようにしましょう。
また、constで宣言した変数(定数)には代入ができないという性質から、constで変数宣言を行う際に値を設定しない場合にもエラーが出ます。
const name;
// Uncaught SyntaxError: Missing initializer in const declaration
「constで宣言した変数(定数)に初期値が設定されてないよ〜」
というエラーです。
constで宣言した変数(定数)には代入ができないため、初期値を設定しないとその変数(定数)は使い物になりませんからね。
ちなみにオブジェクトや配列への要素の追加は代入としては扱われないため、空のオブジェクトや空の配列をconstで宣言するのは問題ありません。
const object = {};
const array = [];
// エラーにはならない。
まとめ
Assignment to constant variable エラーはconstで宣言された変数(定数)に対して代入を行うことで発生してしまうエラーです。
Assignment to constant variable エラーを防ぐために、まずはJavaScriptのlet,const,varの違いについてしっかり理解することから始めてみましょう。
コメント