1. ホーム
  2. javascript

[解決済み] キーワード 'const' は値をイミュータブルにしない。どういう意味ですか?

2023-05-09 09:10:40

質問

このページでは const 定義 ES6 を探る アクセル・ラウシュマイヤー博士によるものです。

const はletと同じように動作しますが、宣言した変数はすぐに はすぐに初期化されなければなりません。 で、後から変更できない値で その後 . [...]

const bar = 123;
bar = 456;  // TypeError: `bar` is read-only

と書き、さらに

<ブロッククオート

落とし穴: const は値を不変にしない

const は、変数が常に同じ値を持つことだけを意味します。 のようなものですが、値そのものが不変である、あるいは不変になるということではありません。

私はこの落とし穴に少し困惑しています。誰か明確に const を明確に定義できますか?

どのように解決するのですか?

MDN がうまくまとめてくれています。

<ブロッククオート

const 宣言は値への読み取り専用の参照を作成します。これは、保持する値が不変であることを意味するのではなく、単に変数の識別子が再割り当てできないことを意味します。例えば、コンテンツがオブジェクトの場合、これはオブジェクト自体がまだ変更可能であることを意味します。

もっと簡潔に言うと const はイミュータブルバインディングを作成します。

言い換えれば const のように var のように、何かを格納するための可変長のメモリチャンクを提供します。しかし、const では、メモリの同じチャンクを参照し続けなければなりません。変数の参照は一定なので、変数をメモリの別のチャンクに再割り当てすることはできません。

宣言した後に本当に定数で不変のものを作るには、次のようなものを使う必要があります。 Object.freeze() . しかし、これは浅はかで、キーと値のペアにしか使えません。オブジェクト全体を凍結させるには、もう少し手間がかかります。それを繰り返し実行するのは、さらに難しいことです。もし本当にその必要があるのなら、次のようなものをチェックアウトすることをお勧めします。 Immutable.js