const 创建的常量是否真的不能修改?

106 阅读1分钟

前言

我们知道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 创建的不可修改的常量,其中的不可修改指的是 => 不能直接修改的常量,但是遇见对象这种保存指针的空间的类型时,在保持其指针不发生改变,修改其对应的属性值,是不会发生错误的