猿问

为什么splice() push()等方法可以修改const声明的常量?

举个栗子:

const arr = ['吃饭','睡觉','喝水']
arr.splice(2,1)console.log(arr)
输出:['吃饭','睡觉']

再个栗子:

const arr = ['吃饭','睡觉','喝水']
arr.push('盘他')console.log(arr)
输出:['吃饭','睡觉','喝水','盘他']

而这样修改就会报错:

const arr = ['吃饭','睡觉','喝水']
arr = ['吃饭','睡觉','喝水','吃鸡']console.log(arr)
输出:error

这是为什么呢?


慕标5832272
浏览 2617回答 3
3回答

蓝山帝景

const声明创建一个值的只读引用。但这并不意味着它所持有的值是不可变的,只是变量标识符不能重新分配。例如,在引用内容是对象的情况下,这意味着可以改变对象的内容(例如,其参数)。const

手掌心

因为const声明的时候,不能改变的是这个变量在内存中的指针。数组和对象是引用类型。splice和push并不会改变该数组在内存中的地址引用,所以不会报错
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答