AGa*_*yer 3 javascript constants
在 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?
Run Code Online (Sandbox Code Playgroud)
我发现人们有时会定义一个 const 对象,但后来会更改它的值。为什么 const 定义后可以更改?
使用 声明的变量const意味着一件事:独立变量名称以后不能重新分配=。
相反,o.a = 5;不是重新分配变量名称 - 它改变了对象的内容,但它并没有改变变量o在内存中指向的内容。
要防止重新分配变量名称,请使用const. 为了防止对象发生突变是完全不同的事情 - 为此,您需要类似或使用immutable-jsObject.freeze操作对象。
在第一种情况下,a是const并且不能被重新分配。在第二个和第三个中,对象o是const这样的,即对象不能被分配另一个值,但它的属性却不能const。请参阅此处:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const
该
const声明创建对值的只读引用。这并不意味着它所保存的值是不可变的,只是变量标识符不能被重新分配。例如,在内容是对象的情况下,这意味着可以改变对象的内容(例如,其属性)。