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