ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で定数オブジェクトを変更できるのはなぜですか?

JavaScript で定数オブジェクトを変更できるのはなぜですか?

Patricia Arquette
リリース: 2024-11-29 01:13:10
オリジナル
509 人が閲覧しました

Why Can I Modify a Constant Object in JavaScript?

JavaScript の Const オブジェクト: 不変プロパティを理解する

ES6 の constant キーワードにもかかわらず、JavaScript では定数オブジェクトを変更できるようです。これは、特に仕様の不変性の主張を考慮すると、不可解かもしれません。では、何が起こっているのでしょうか?

まず、MDN ドキュメントで明らかにされているように、constant キーワードは定数自体の再割り当てと再宣言を禁止します。ただし、オブジェクトまたは配列を変更するときは、それを再代入したり再宣言したりすることはありません。代わりに、オブジェクトのプロパティまたは配列の要素を操作するだけです。

次の例を考えてみましょう。

const x = {};
x.foo = 'bar'; // Adds a property to an existing object
ログイン後にコピー
const y = [];
y.push('foo'); // Appends an element to an existing array
ログイン後にコピー

どちらの場合も、定数オブジェクト (x) と配列 ( y) 同じ参照のままです。オブジェクト自体を変更するのではなく、その要素を追加または変更します。これは、定数参照の不変性に違反しないため許可されます。

ただし、再割り当てまたは再宣言は依然として禁止されています:

const x = {};
x = {foo: 'bar'}; // Error: Reassigning a constant
ログイン後にコピー
const y = ['foo'];
const y = ['bar']; // Error: Re-declaring a constant
ログイン後にコピー

したがって、できる限り、定数オブジェクトまたは定数配列の要素のプロパティを変更する場合、参照自体を置き換えたり再定義したりすることはできません。

以上がJavaScript で定数オブジェクトを変更できるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート