定数の不変性を強調する ES6 仕様を参照しているにもかかわらず、JavaScript は定数オブジェクトに対して一見矛盾したアクションを許可します。定数オブジェクトに別の値を割り当てると、値は変更されませんが、オブジェクト内の要素を追加または削除することは可能であるようです。
MDN ドキュメントによると、「定数は使用できません」 「再代入による変更」と「定数の再宣言はできません」。重要なのは、これは、オブジェクト自体ではなく、オブジェクトへの参照が一定であることを意味します。新しいオブジェクトを定数変数に割り当てることはできませんが、オブジェクトの内容を変更することはできます。
次のコード スニペットを考えてみましょう:
const myArray = []; myArray.push(1); console.log(myArray); // Output: [1]
この場合、myArray 配列への参照は同じ配列オブジェクトを指しているため、変更されません。ただし、push() 操作は要素を配列に追加し、その内容を変更しますが、定数のセマンティクスには違反しません。
同様に、プロパティをオブジェクトに追加することもできます。参照を変更しない定数オブジェクト:
const myObject = {}; myObject.foo = 'bar'; console.log(myObject); // Output: {foo: "bar"}
再割り当てと変更を区別することが重要です。再割り当てでは新しい参照が作成されますが、変更は同じオブジェクト参照に対して行われます。定数オブジェクトの場合、不変性を確保するために再代入は禁止されていますが、オブジェクトの内容の変更は依然として許可されています。
以上がJavaScript の定数が不変の場合、どのように変更できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。