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

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

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

可变的对象变量

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

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

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

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

const obj = Object.freeze({
  name: 222,
  school: {
    name: '学校'
  }
})
obj.name = 333 // 不会有任何变化,严格模式下会报错
obj.school.name = 'jj' // 会重新赋值
相关文章
|
3月前
ES6中的var,let,const
ES6中的var,let,const
|
3月前
|
安全 JavaScript 前端开发
ES6 中 let 与 const命令
ES6 中 let 与 const命令
|
3月前
|
JavaScript IDE 开发工具
es6学习笔记(一)let、const
es6学习笔记(一)let、const
|
JavaScript 前端开发 安全
ES6(let和const命令)
ES6(let和const命令)
62 0
|
自然语言处理 JavaScript 前端开发
每天3分钟,重学ES6-ES12(二)var let const的选择
每天3分钟,重学ES6-ES12(二)var let const的选择
79 0
|
JavaScript 前端开发
ES6——let、const
ES6——let、const
103 0
|
JavaScript 前端开发
【ES6】 let与const详解
【ES6】 let与const详解
|
JavaScript
ES6中let与const的区别
ES6中let与const的区别
|
安全
ES6新特性:let和const
ES6新特性:let和const
106 0
ES6新特性:let和const