令人困惑的常量:为什么你可以(在某种程度上)修改 JavaScript 中的常量对象
尽管 ECMAScript 6 中对常量有明确的定义,它们被声明为不能重新分配或重新声明的不可变值,许多浏览器现在支持 const 关键字允许对常量对象进行某些修改。
这种明显的矛盾源于 JavaScript 中常量行为的技术细节。虽然您不能直接重新分配或重新声明常量,但您可以更改常量对象的属性。
这样做的原因是,当您从数组中添加或删除元素,或者添加或更改数组中的属性时,一个对象,你实际上并没有改变常量本身。相反,您正在修改常量指向的对象的内部状态。
例如,在以下代码中:
const yyy = []; yyy.push(6); yyy.push(1);
yyy 仍然是对同一数组的引用,但是该数组的内容发生变化。类似地,在以下代码中:
const x = {}; x.foo = 'bar';
x 继续引用同一个对象,但向该对象添加了一个新属性 foo。
因此,可以修改常量对象的状态,但不能重新分配或重新声明常量本身。
以上是你能在 JavaScript 中修改常量对象吗?的详细内容。更多信息请关注PHP中文网其他相关文章!