const定义的并非是常量,而是常量索引

我第一次看const的时候,记忆中对const的定义是,定义常量。

后经过研究,定义的并非常量,而是常量索引。

有时候会遇到使用const定义数组的情况

const arr = []

arr.push('1')
console.log(arr) // ['1']

arr = ['1']
console.log(arr)  //error

会发现,直接赋值会导致报错,而使用push方法添加值会正常运行

 

是因为使用const创建常量的时候,其实创建的是它的常量索引,而不是常量值,不变的是常量索引指向常量值的指针。

所以使用方法赋值,是直接修改的指向值,并不改变常量索引;

而直接赋值是改变他的常量索引,也就指针也改变了,那会抛出错误

 

posted @ 2018-03-22 11:26  CreteWu  阅读(509)  评论(0编辑  收藏  举报