前言
我们知道const的特点是 声明一个不可修改的常量,且必须在声明的同时初始化值。但是const创建的常量是否真的不能修改?
重点来了
总所周知Array和Object都是引用类型,当const创建数组或者对象时,const声明的常量仅仅保存的是目标的指针,这就意味着只要保证数组和对象的指针不发生改变,修改其中的属性值是不会产生错误的。
例如
- array
const arr = [1,2,3,4,5,6,7,8,9]
arr[0] = 666 //arr = [666,2,3,4,5,6,7,8,9]
arr.push(999) //arr = [666,2,3,4,5,6,7,8,9,999]
arr = [1,2,3] //报错
- 对象
const obj = {name:'逍遥', age=22}
obj.age = 100 // obj = {name:'逍遥', age=100}
obj.weight = 100 // {name:'逍遥',age=19,weight=100}
obj = {name:'lisa'} //报错
总结
个人理解const 创建的不可修改的常量,其中的不可修改指的是 => 不能直接修改的常量,但是遇见对象这种保存指针的空间的类型时,在保持其指针不发生改变,修改其对应的属性值,是不会发生错误的