【发布时间】:2020-02-02 15:36:48
【问题描述】:
我想知道javascript中const变量的原理。
我知道 const 是平均常量变量。这意味着const a = 1 和 a 将无法重新分配值。但是,如果我将一个对象分配给const 变量(const a = { x: 1}),我仍然可以更新对象内部字段的值,但不能重新分配对象。因为,将 object 分配给 const 是将 object 的引用分配给变量,而不是变量中的值。
但是,如果我告诉对编码一无所知的人,const 无法重新分配变量。我想他们可能明白const a = { x: 1 } 和a.x = 2 应该失败。
所以,我想知道设计const 变量背后的抽象概念是什么。为什么首先,他们认为const 仅适用于参考,而不适用于其中的价值。
附:抱歉我的英语语法不好。我不是母语人士。
【问题讨论】:
-
您可能想了解
Object.freeze、Object.seal和Object.preventExtensions属性 -
所以你期望分配给它的对象应该是不可变的。看到这个:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
a.x不是a,所以a.x = 2很好。正如您所说,const是一种变量,而不是对象属性。 -
const 声明创建一个对值的只读引用。这并不意味着它持有的值是不可变的,只是不能重新分配变量标识符。例如,在内容是对象的情况下,这意味着可以更改对象的内容(例如,它的属性)。
标签: javascript object variables constants