JavaScript の定数

const で定数を宣言する

JavaScript の ES6 以降では、定数を宣言するために const キーワードが使えるようになりました。

const キーワードで定数を宣言するためには、宣言時に初期値を与える必要があります。 あとから値を代入しようとすると、エラーになります。

const キーワードで宣言した定数のスコープはブロックスコープです。スコープ的には let と同様です。明示的なブロック外で宣言しても、 Global オブジェクトのプロパティとして扱われません。

const x = 1;
console.log(x); // 1
console.log(window.hasOwnProperty('x')); // false

x = 2; // エラー

const でオブジェクトを宣言する

JavaScript の「定数」というのは、再割り当て (reassignment) できない、「読み取り専用」(Read-Only) である、という意味になります。

例えば、オブジェクトの参照をある定数に一度割り当てたら、そのオブジェクトへの参照が上書きできなくなります。 しかし、オブジェクトの属性値などが変更不可になるわけではありません。

次の例では、const キーワードを使って宣言した定数オブジェクト a の属性値 age を書き換えています。

const a = {
  name: 'Mike',
  age: 25
};

console.log(a);

a.age = 30; // 書き換える

console.log(a);

実行結果は次の通りです。確かに age が書き換えられています。

しかし、引き続き a に何かを割り当てようとすると、エラーが発生します。

a = {};

もちろん、これは aconst を用いて宣言されているためです。

オブジェクトのプロパティの「値の変更を禁止」するためには、Object.freeze()関数を利用できます。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 JavaScript 入門