有关于const的故事

277 阅读1分钟

关于const

使用const 声明一个常量obj1。 { key1: 12 }这部分保存在堆里(便于理解)。假设地址为0x11111111

const obj1 = { key1: 12 }

第一种情况: 这就是直接改变了地址,肯定报错

obj1 = { a: 3 }。 

第二种情况: 在obj1里面多加了一个键值对,原来的地方住不下了,于是开辟了新的空间。内存地址变了

obj1.key2 = 2

第三种情况: 删除key1的值,原来住的地方够住。内存地址没变

delete obj1.key1

第四种情况: 修改key1的值,原来住的地方够住。内存地址没变

obj1.key1 = 5

疑问

针对第四种情况,如果是这样:

obj1.key1 = [ 这个数组里存了1000个值 ]

此时分配给0x1111111这个地址的空间还够用么?如果不够,那岂不是有开辟新空间了?哪内存地址不还得变

我查了MDN文章

image.png 这句话改怎么理解呢?

只是变量标识符不能重新分配