问题描述
在网上找了const的两种写法,为什么一种报错,而另一种可以成功?
MDN的解释:The const declaration creates a read-only reference to a value. It does not mean the value it holds is immutable, just that the variable identifier cannot be reassigned. For instance, in the case where the content is an object, this means the object's contents (e.g., its properties) can be altered.
具体解释就是,变量在编译链接后会被分配到具体的某个内存地址,变量值是该地址存储的内容。用const初始化变量,就是将初始变量值分配到指定内存地址。此时内存地址已经确定不能变,再赋值会将这个变量分配到别的地址,报错;而地址中存储的变量值可以被修改。
const
声明的是常量,常量是不可以被赋值的,即当你 const name = [];
的时候,这个name
的值就只能是[]
了,不可以再被赋值为[1,2,3]
,如果确实需要常量,那么可以const name = [1, 2, 3]
8 回答4.8k 阅读✓ 已解决
6 回答3.6k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
数组等引用类型变量存储的是地址,上边那种相当于直接改变了该变量的地址指向,就和你直接重新赋值变量是一个概念。所以会报错。
下边那种改变的是数组内的元素,本质上names存储的内存地址并未改变,所以不会报错