前端const(js 里面 let 和 const的区别)

前端const(js 里面 let 和 const的区别)

大家好,今天小编来为大家解答以下的问题,关于前端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 限制的是「变量绑定不能变」,不是「内容不能变」。

前端const(js 里面 let 和 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的介绍到此结束,希望对大家有所帮助。

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

相关阅读