難解な定数: JavaScript で定数オブジェクトを (ある種) 変更できる理由
ECMAScript 6 では定数が明確に定義されているにもかかわらず、これらは、再割り当てまたは再宣言できない不変の値として宣言されており、現在多くのブラウザがサポートしています。 const キーワードを使用すると、定数オブジェクトに対する特定の変更が可能になるようです。
この矛盾と思われる点は、JavaScript の定数動作の技術的な理由から生じます。定数を直接再割り当てしたり再宣言したりすることはできませんが、定数オブジェクトのプロパティを変更することはできます。
その理由は、配列の要素を追加または削除したり、配列のプロパティを追加または変更したりするときに発生します。オブジェクトの場合、実際には定数自体を変更するわけではありません。むしろ、定数が指すオブジェクトの内部状態を変更しています。
たとえば、次のコードでは、
const yyy = []; yyy.push(6); yyy.push(1);
yyy は同じ配列への参照のままですが、その配列の内容が変更されます。同様に、次のコードでは、
const x = {}; x.foo = 'bar';
x は同じオブジェクトを参照し続けますが、新しいプロパティ foo がそのオブジェクトに追加されます。
したがって、次のことが可能です。定数オブジェクトの状態を変更できますが、定数自体を再割り当てしたり再宣言したりすることはできません。
以上がJavaScript で定数オブジェクトを変更できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。