This question already has answers here:
Why can I change value of a constant in javascript

(9个答案)



JavaScript const Keyword

(8个答案)


5年前关闭。




使用JavaScript ES6,我感到惊讶:
const a = {};
a.foo = 'bar';
a.foo = 'car';

已验证。为什么是这样?我本来以为const意味着您无法更改a空对象并应用新属性。更进一步,我还假设您一旦设置了a属性就无法更改它的值。

最佳答案

只有变量分配是恒定的。引用的任何对象或数组均保持可变。

const a = {one: 1};
a.three = 3; // this is ok.
a = {two: 2}; // this doesn't work.

您可以做的是使用Object.freeze:
const a = {one: 1};
Object.freeze(a);
a.three = 3; // silently fails.
// a is still {one: 1} here.

关于JavaScript ES6 `const a = {}`是可变的。为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34983693/

10-16 15:43