const保证的并不是变量的值不能改动,而是变量指向的那个内存地址不能改动。
- 对于基本类型的数据(数值、字符串、布尔值),其值就保存在变量指向的那个内存地址,因此等同于常量。
- 对于引用类型的数据(主要是对象和数组)来说,变量指向数据的内存地址,保存的只是一个指针,const只能保证这个指针是固定不变的,至于它指向的数据结构就不能控制了。
const aa=true aa=false console.log(aa) // VM1089:2 Uncaught TypeError: Assignment to constant variable.
const aaa=3 aaa=5 console.log(aaa)
// VM1152:2 Uncaught TypeError: Assignment to constant variable.
const aaaa='ss' aaaa='dd' console.log(aaaa) // VM1194:2 Uncaught TypeError: Assignment to constant variable.
const aaaaa={aa:'dd'} aaaaa={aa:'bb'} console.log(aaaaa) // VM1257:2 Uncaught TypeError: Assignment to constant variable.
const aaaaaa={aa:'dd'} aaaaaa.aa='bb' console.log(aaaaaa) // {aa: "bb"}