ES6 const 介绍

简介: 使用const语法创建变量,一旦创建成功,就不能改变它们的值,因此我们称为常量。如果你尝试改变一个const变量,则会抛出异常const a = 2;a = 3VM27863:1 Uncaught TypeError: Assignment to constant variable. at <anonymous>:1:3原理:阻隔变量所对应内存地址被改变ES6在对变量的引用进行读取时,会从该变量当前所对应的内存地址所指向内存空间中读取内容。

使用const语法创建变量,一旦创建成功,就不能改变它们的值,因此我们称为常量。如果你尝试改变一个const变量,则会抛出异常

const a = 2;
a = 3
VM27863:1 Uncaught TypeError: Assignment to constant variable.
    at <anonymous>:1:3
AI 代码解读

原理:阻隔变量所对应内存地址被改变

ES6在对变量的引用进行读取时,会从该变量当前所对应的内存地址所指向内存空间中读取内容。当变量改变时,引擎会重新从内存分配一个新的内存以存储新值,并将新值的内存地址与变量进行绑定。const的原理便是在变量名与内存地址时间建立不可变的绑定。

可变的对象变量

const obj = {name: 111}
obj.name = 222
这样是可以改变的,改变的只是对象属性的值,对象本身的地址引用并没有改变,所以不报错

obj = {age: 12}
这样就会报错,因为尝试去改变obj的地址引用
AI 代码解读

如何让对象的属性不可变呢

可以用Object.freeze(),该方法为浅冻结

const obj = Object.freeze({
  name: 222,
  school: {
    name: '学校'
  }
})
obj.name = 333 // 不会有任何变化,严格模式下会报错
obj.school.name = 'jj' // 会重新赋值
AI 代码解读
目录
打赏
0
0
0
0
3
分享
相关文章
|
10月前
ES6中的var,let,const
ES6中的var,let,const
ES6 标准之 let、const 详解
ES6 为JavaScript带来了许多强大的新特性,使开发者能够编写更加简洁、清晰和高效的代码。let和const作为新的变量声明方式,提供了更严格的作用域控制和不可变性,有助于减少错误和提高代码质量。
96 2
ES6 标准之 let、const 详解