大家好,今天小编来为大家解答以下的问题,关于前端const,前端const这个很多人还不知道,现在让我们一起来看看吧!
const
是否能重新赋值
块级作用域
块级作用域
常量、不变引用
示例 1:是否能重新赋值
const name = 'Jason';name = 'Tom'; // ? 报错:Assignment to constant variable.let age = 30;age = 31; // ? 正常
示例 2:数组、对象是“引用不变”,但内容可以改
const arr = [1, 2, 3];arr.push(4); // ? 可以修改数组内容arr = [5, 6]; // ? 报错:不能重新赋值为新数组const obj = { a: 1 };obj.a = 2; // ? 可以改属性obj = { b: 3 }; // ? 报错
? const 限制的是「变量绑定不能变」,不是「内容不能变」。

示例 3:作用域
两者都有「块级作用域」:
{ let x = 1; const y = 2;}// console.log(x); // ? 报错// console.log(y); // ? 报错
Vue 中的响应式变量
const total = ref(0)function addToTotal(val) { total.value += val}
看起来 total 的值确实变了,但其实 const 这里并不是让值不能变,而是变量绑定不变,我们来深入解释一下。
Vue 中 ref 的本质
const total = ref(0)
这句话创建了一个 响应式引用对象,total 是一个对象,结构大概是:
total = { value: 0}
onst 保证的是:
? 变量 total 这个指针 不能重新赋值,但
? total.value 可以改(因为这是对象的属性)。
类比解释:
想象一下:
const box = { value: 0 }box.value += 1 // ? 可以box = { value: 100 } // ? 报错
? 正确理解
const total = ref(0) // total 绑定到这个 ref 对象total.value += 1 // 改变的是对象内部的 value,不是重新赋值
所以,这里并不违背 const 的规则,你只是在修改对象内部的值,不是在修改 total 本身的引用。
关于前端const,前端const的介绍到此结束,希望对大家有所帮助。