JavaScript: constは再定義や再代入するとエラーになる

JavaScriptでは定数を宣言するときに「const」を使いますが、 constには次の2つの特徴があります。

  • 再代入できない
  • 同一ブロック内では再定義(再宣言)できない

それぞれについて解説します。

再代入できない

constで宣言した定数に、値を再代入することはできません。 言い換えると、値の変更ができません。

次のサンプルコードでは、定数「TAX」の値を変更しようとして エラーが発生しています。

const TAX = 1.10;

TAX = 1.08;
実行結果
Uncaught TypeError: invalid assignment to const 'TAX'

constは一般的には定数宣言として使われますが、 より正確に言うと「再代入できない変数」を宣言するための命令です。

同一ブロック内では再定義(再宣言)できない

同じブロック内で、constを使って同じ名前の定数を宣言するとエラーになります。

例えば次のようなコードです。

const TAX = 1.10;

const TAX = 1.08;
実行結果
Uncaught SyntaxError: redeclaration of const TAX

「redeclaration: 再宣言してます」というエラーがでます。

但し、ブロックが異なれば同じ名前でもエラーにはなりません。

次のサンプルコードでは、トップレベルでconst宣言した「TAX」と ifブロックの中でconst宣言した「TAX」は別々の定数(変数)となります。 そのため正常に実行できます。

const TAX = 1.10;

if (true){
	const TAX = 1.08;
	console.log(TAX); // 1.08
}

console.log(TAX);     // 1.1
JavaScript入門