const定义的对象能被修改么?

我们都知道,const是用来定义常量的。

既然是常量,那就不可以修改。(如果可以被修改,那不就成了“变量”了吗?)

但是大家可以在控制台试验一下如下代码,这是不会报错的:

const person = {
  name: 'Andy',
  sex: '男'
}
person.name = 'Dan' // 没有报错
console.log(person.name) // Dan

为什么person可以被修改呢?这不矛盾吗?

我来解释一下为什么:

其实person中保存的并不是对象,而是“对象的指针”。用const来声明person对象,只可以保证这个对象的指针不变,对象的属性是可以随意修改的。

因为我们修改对象属性的时候,指针是不会变的。