javascript エラー「Uncaught TypeError: Assignment to constant variable.」の原因

javascript エラー「Uncaught TypeError: Assignment to constant variable.」の原因

chromeでエラー「Uncaught TypeError: Assignment to constant variable.」が発生する原因と解決方法を記述をしてます。

環境

  • OS windows10 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 103.0.5060.114

エラー内容

chrome103にて、以下のエラーが発生

Uncaught TypeError: Assignment to constant variable.

発生したコード
その他の発生パターンは後述してます。

const num = 0;

num = 7;

console.log(num);

firefox102の場合は以下となります。

Uncaught TypeError: invalid assignment to const 'num'

IE11の場合は以下となります。

SCRIPT1055: const への代入

原因

constで、定数にしたものに値を代入しようとしたため

解決方法

値を代入するのであれば、「let」 か 「var」を使用します。

let num = 0;

num = 7;

console.log(num);

もしくは別の定数を用意して、そこに代入します。

const num = 0;

const another_num = 7 + num;

console.log(another_num); // 7

どうしても同じ変数名にしたい場合は、関数などを使用してスコープを変更します。

const num = 0;

function f() {
    const num = 7
    console.log(num)
}

f() // 7

その他

オブジェクトの値を操作

オブジェクトに、値を再割り当てすると同じエラーが発生します。

const obj = {
  name: 'hoge',
};

// 直接変更は可能
obj.name = 'foo';

console.log(obj); // {name: 'foo'}

// 再割り当てするとエラーが発生
obj = {name: 'bar'};

console.log(obj); // Uncaught TypeError: Assignment to constant variable.

こちらも「let」か「var」を使用することが解決します。

let obj = {
  name: 'hoge',
};

obj.name = 'foo';

console.log(obj); // {name: 'foo'}

obj = {name: 'bar'};

console.log(obj); // {name: 'bar'}

ちなみに、配列は操作可能です。

const arr = ['hoge'];

arr[0] = 'foo';

console.log(arr); // ['foo']

if文に使用

「const」を使用して「if」文に「=」が足らない場合も発生します。

const num = 0;

if(num = 0){ console.log(num) }
// Uncaught TypeError: Assignment to constant variable.

「==」か「===」を使用すれば解決します。

const num = 0;

if(num == 0){ console.log(num) }
// 0