在我们的印象中,const是用来定义常量的,定义后不可修改。
假如面试官问你:javascript 中 const 常量是否能修改对象属性?
我想大部分人会脱口而出:不能修改。
那实际情况是怎么样的呢?我们来测试下。
1 | // 定义测试常量t |
奇怪?为什么和我们预想的不一样呢?
我们知道在 javascript 中存在基础类型和引用类型。
基础类型如常见的整数、字符串、浮点数等,引用类型包括对象、数组等。
针对基础类型,常量保存的是具体的值,但是针对引用对象,常量仅保存该对象内存区域地址(指针)。
所以在修改引用类型常量时,如果只修改内存区域内容,不修改指针不会影响常量储存的内存区域地址(指针),故不会报错。
但是如果修改了指针引用,即使不修改对象内容,也会报错,如下:
1 | const t = {} |