3 回答
TA贡献1900条经验 获得超5个赞
MDN很好地总结了一下:
const声明创建对值的只读引用。这并不意味着它拥有的值是不可变的,只是不能重新分配变量标识符。例如,如果内容是对象,则意味着对象本身仍可以更改。
更简洁地说:const创建一个不可变的绑定。
换句话说:const与var一样,为您提供了可变的内存块,您可以在其中存储某些内容。但是,const指示您必须继续引用相同的内存块–您不能将变量重新分配给不同的内存块,因为变量引用是恒定的。
要真正使某些内容在声明后保持不变且不变,您需要使用Object.freeze()。但是,这很浅,仅适用于键/值对。冻结整个对象需要花费更多的精力。以高效的方式重复执行此操作更具挑战性。如果您确实有需要,建议您检查一下Immutable.js之类的内容
TA贡献2003条经验 获得超2个赞
当您使用constJavaScript制作内容时,您无法将变量本身重新分配为引用其他内容。但是,该变量仍可以引用可变对象。
const x = {a: 123};
// This is not allowed. This would reassign `x` itself to refer to a
// different object.
x = {b: 456};
// This, however, is allowed. This would mutate the object `x` refers to,
// but `x` itself hasn't been reassigned to refer to something else.
x.a = 456;
就字符串和数字之类的基元而言,const它更易于理解,因为您无需对值进行突变,而是为变量分配了一个新值。
添加回答
举报
