问题描述
我遇到了一个有趣的概念,其中 const
对于 number
、string
、Boolean
与 Object
、arrays
的行为不同。>
const num1 = 10
num1 = 20 //throws error
const arr1 = [1,2,3,4]
arr1.push(5) //works
arr1.pop() //works
arr1[2] = 7 //works
arr1 = [2,3] //throws error
对于 array
和 objects
,它允许更改值,但会在赋值中引发错误。是否意味着将 object
或 array
声明为 const
没有任何优势,因为您可以随时更改所有值?
如果有人能解释一下,我想知道,const
在幕后是如何工作的?
解决方法
const 声明创建一个对值的只读引用。 它所持有的价值仍然是不可变的。数组和对象都持有一些值。这些值和属性可以更改,但不能重新分配相同的变量标识符。
这里的 arr1 是一个变量标识符
const arr1 = [1,2,3,4]
arr1.push(5) //works // changing the value
arr1.pop() //works //changing the value
arr1[2] = 7 //works // changing the value
这里 arr1 被重新分配所以它抛出一个错误
arr1 = [2,3] //throws error // reassigning the same variable