在JavaScript中使用const声明一个变量,只意味着该变量总是指向相同的对象或基本数值,因为该引用不能改变。引用本身是不可变的,但是变量存储的值不会变成不可变的。

在下面这个例子中,虽然 people 指向的引用不能修改,但是数组自身是可以修改的。

const 语句只能防止变量指向另外一个值。我们可以用另外一个例子来展示这个区别,我们会使用 const 创建一个 people 变量,然后使用 var 把它复制给一个变量 humans。我们可以为 humans 变量重新赋值,因为它不是用 const 来声明的。但是,我们不能为 people 重新赋值指向另外一个数值,因为它是用 const 声明的。

如果我们的目的是让变量值不可变,这时需要用一个函数来实现,如 Object.freeze。使用 Object.freeze 可以对象被扩展,例如: