プリミティブ型(Number型やString型等)の変数は、constで定義することで変更不可にできます。
これを利用して、定数値を定義することができます。
【サンプルコード】
const hoge = 1;
hoge = 2;
console.log(hoge);
【ChromeのデベロッパーツールのConsoleで実行】
Uncaught TypeError: Assignment to constant variable.
at <anonymous>:2:6
----
しかし、オブジェクト型の場合、constで保持されるのは変数が指し示すアドレスであり、値は変更可能です。
そのため、定数値を定義するには適していません。
【サンプルコード】
const obj = {
hoge: 1
};
obj.hoge = 2;
console.log(obj.hoge);
【ChromeのデベロッパーツールのConsoleで実行】
2
----
オブジェクト型で定数値を定義したい場合は、Object.freeze()を使う必要があります。
これを使うことで、オブジェクト型の変数が指し示す値を変更不可にすることができます。
【サンプルコード】
const obj = {
hoge: 1
};
Object.freeze(obj);
obj.hoge = 2;
console.log(obj.hoge);
【ChromeのデベロッパーツールのConsoleで実行】
1