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' // 会重新赋值
相关文章
|
JavaScript 前端开发 程序员
用Unity不会几个插件怎么能行?Unity各类插件及教程推荐
话说工欲善其事必先利其器,程序员总是有一些开发利器,而对于Unity3D开发程序员来说,插件就是非常好用的利器。 今天博主,就将比较好用的插件推荐给大家,希望一起学习品鉴。
|
Java 数据库连接 数据库
Mybatis-plus逆向工程使用方法
本文讲解Mybatis-plus逆向工程使用方法。
1173 0
Mybatis-plus逆向工程使用方法
|
NoSQL Ubuntu 安全
在Ubuntu 18.04上安装和保护Redis的方法
在Ubuntu 18.04上安装和保护Redis的方法
311 0
|
8月前
|
存储 JSON API
淘宝商品详情API接口概述与JSON数据示例
淘宝商品详情API是淘宝开放平台提供的核心接口之一,为开发者提供了获取商品深度信息的能力。以下是技术细节和示例:
|
机器学习/深度学习 编解码 算法
ICCV 2023 | 当尺度感知调制遇上Transformer,会碰撞出怎样的火花?
近年来,基于Transformer和CNN的视觉基础模型取得巨大成功。有许多研究进一步地将Transformer结构与CNN架构结合,设计出了更为高效的hybrid CNN-Transformer Network,但它们的精度仍然不尽如意。本文介绍了一种新的基础模型SMT(Scale-Aware Modulation Transformer),它以更低的参数量(params)和计算量(flops)取得了大幅性能的提升。
|
11月前
|
人工智能 安全 机器人
OpenAI重拾规则系统,用AI版机器人定律守护大模型安全
在人工智能领域,大语言模型(LLM)展现出强大的语言理解和生成能力,但也带来了安全性和可靠性挑战。OpenAI研究人员提出“规则基于奖励(RBR)”方法,通过明确规则引导LLM行为,确保其符合人类价值观和道德准则。实验显示,RBR方法在安全性与有用性之间取得了良好平衡,F1分数达97.1。然而,规则制定和维护复杂,且难以完全捕捉语言的多样性。论文:https://arxiv.org/pdf/2411.01111。
371 13
|
弹性计算 NoSQL Shell
redis没设置密码,莫名被设置了4个sh脚本
阿里云ECS实例上未设密码的Redis服务被发现含有未知来源的SH脚本,这些脚本定时从外部URL下载并执行代码。这可能是服务器遭受恶意攻击的迹象。建议立即检查系统日志,确认是否被黑,并移除这些脚本。同时,为Redis设置密码,加强安全防护。若不确定,可寻求专业安全团队帮助。
559 2
|
存储 缓存 JavaScript
【前端 - Vue】之 Keep-Alive缓存组件使用语法及原理解析,超详细!
【前端 - Vue】之 Keep-Alive缓存组件使用语法及原理解析,超详细!
|
安全 芯片
快充电压诱骗芯片 PW6606如何提升充电体验与安全性
本文介绍了充电器的两种主要类型:A口充电器(支持QC3.0和QC2.0快充协议)和TYPE C口充电器(支持PD快充协议)。PD快充提供了更多电压选项,并且TYPE C接口兼容A口功能。平芯微的PW6606芯片是一款适用于快充电压诱骗的解决方案,它兼容PD3.0/2.0、QC3.0/2.0协议,能设置不同输出电压,并具有良好的安全保护特性,如高耐压引脚和异常情况下的断开保护。此外,PW6606还支持向下兼容,当设置的电压无法实现时,会自动降低电压等级。文章中还展示了芯片的电路图和实际测试结果,证明了其在不同充电器上的有效工作。
|
运维 资源调度 Kubernetes
「开源人说」第五期 | KubeVela:一场向应用交付标准的“冲锋”
「开源人说」第五期聚焦云原生领域开源至今仅两年多的项目——KubeVela,将镜头对准 KubeVela 项目背后的代码贡献者和落地实践者,讲述这个从第一天就诞生在社区的技术,如何走到对不同场景应用“海纳百川”,直至成为 CNCF 孵化项目,并逐渐向应用交付领域的事实标准演进的故事。 阅读下文,让我们跟随 KubeVela 创始团队,一起了解它的开源背后的故事。
199919 1
「开源人说」第五期 | KubeVela:一场向应用交付标准的“冲锋”