Home > Web Front-end > JS Tutorial > Why Can I Modify a Constant Object in JavaScript?

Why Can I Modify a Constant Object in JavaScript?

Patricia Arquette
Release: 2024-11-29 01:13:10
Original
507 people have browsed it

Why Can I Modify a Constant Object in JavaScript?

Const Objects in JavaScript: Understanding Immutable Properties

Despite the constant keyword in ES6, you can seemingly modify constant objects in JavaScript. This can be puzzling, especially considering the spec's claim of immutability. So, what's going on?

Firstly, as the MDN documentation clarifies, the constant keyword prohibits reassignment and re-declaration of the constant itself. However, when modifying an object or array, you're not re-assigning or re-declaring it. Instead, you're simply manipulating the object's properties or the array's elements.

Consider the examples:

const x = {};
x.foo = 'bar'; // Adds a property to an existing object
Copy after login
const y = [];
y.push('foo'); // Appends an element to an existing array
Copy after login

In both cases, the constant object (x) and array (y) remain the same references. You're not changing the object itself, but instead adding or modifying its elements. This is allowed because it doesn't violate the immutability of the constant reference.

However, reassignment or re-declaration is still prevented:

const x = {};
x = {foo: 'bar'}; // Error: Reassigning a constant
Copy after login
const y = ['foo'];
const y = ['bar']; // Error: Re-declaring a constant
Copy after login

Therefore, while you can modify the properties of a constant object or the elements of a constant array, you cannot replace or redefine the reference itself.

The above is the detailed content of Why Can I Modify a Constant Object in JavaScript?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template