const定义的是对象时属性能否被改变
const定义的变量存在块级作用域,且不存在变量提升,一般用于定义常量,定义的时候必须初始化。
const定义的如果是基本数据类型(string,number,boolean,null,undifined,symbol),定义后就不可再修改,如果修改,会报错。
如果是const定义的对象呢?是否可以修改对象中的属性?
答案是:可以的
因为对象是引用类型的,const定义的对象q中保存的是指向对象q的指针,这里的“不变”指的是指向对象的指针不变,而修改对象中的属性并不会让指向对象的指针发生变化,所以用const定义对象,对象的属性是可以改变的。
- const声明的只是栈区内容不变,基本数据类型保存在栈区中不可改变;引用数据类型在栈区保存的地址不可改变。
- 所以const声明的q给属性重新赋值是可以的,但是给q重新赋值是不可以的,那样会改变q在栈区的地址。