const定义的并非是常量,而是常量索引
我第一次看const的时候,记忆中对const的定义是,定义常量。
后经过研究,定义的并非常量,而是常量索引。
有时候会遇到使用const定义数组的情况
const arr = [] arr.push('1') console.log(arr) // ['1'] arr = ['1'] console.log(arr) //error
会发现,直接赋值会导致报错,而使用push方法添加值会正常运行
是因为使用const创建常量的时候,其实创建的是它的常量索引,而不是常量值,不变的是常量索引指向常量值的指针。
所以使用方法赋值,是直接修改的指向值,并不改变常量索引;
而直接赋值是改变他的常量索引,也就指针也改变了,那会抛出错误