首页 > 解决方案 > 为什么在 JavaScript 中定义后可以更改对象 const?

问题描述

在 JavaScript 中:

const a = 6;
a = 2; // Error

const o = {};
o = 7; // Error
o.a = 5; // Good. Why?

const o = {a:1};
o.a = 2; // Good. Why?

我发现人们有时会定义一个 const 对象,但后来会更改它的值。为什么 const 定义后可以更改?

标签: javascriptconstants

解决方案


声明的变量const意味着一件事:以后不能重新分配独立变量名=

相反,o.a = 5;不是重新分配变量名——它改变了对象的内容,但它没有改变o变量在内存中指向的内容。

要防止重新分配变量名,请使用const. 防止对象的突变是完全不同的事情 - 为此,您需要类似或使用immutable-jsObject.freeze操作对象。


推荐阅读