碰到这个问题我第一反应是肯定不能改变,如果要改变值的话,用const定义干嘛,然后不信邪在浏览器控制台试试结果。
卧槽!
但是定义一个基本类型,确实改不了
那为什么const 定义的对象和数组可以改变它的值呢?
我来为大家解释一下。
都知道对象和数组是引用类型,const声明的a中保存的仅是数组和对象的指针,这就是说const仅保证指针不发生改变,修改数组的值不会改变对象的指针,所以是可以改的的。也就是说const定义的引用类型只要指针不发生改变,其他的不论如何改变都是可以的。
我们试着修改一下指针,让a指向一个新数组,结果如下图:
我再试一下重新赋值,结果也是一样,说明即使值没发生改变,指针改变也是不允许的。