const声明了数组,还能push元素吗,为什么?
可以push元素,原因如下:
- 因为数组是引用数据类型,const声明的引用类型变量,不可以变的是变量引用始终指向某个对象,不能指向其他对象,但是所指向的某个对象本身是可以改变的。
- push 方法相当于是改变了堆内存中的数据结构。
- const 只能保证栈内存中的地址不变,但是堆内存中的数据如何改变是没有办法控制的。
- 因为 const 声明的变量保存的只是栈内存中的地址,只是一个指向实际数据的指针。指针指向堆内存中保存的数据。
代码演示:
const arr = [4, 5]
arr.push(1)
console.log(arr); //[4,5,1]