美文网首页
const声明常量

const声明常量

作者: 似朝朝我心 | 来源:发表于2020-09-11 21:25 被阅读0次

ES3声明常量,采用大写,但意义不大,不严谨。




很明显BASE_URL发生变化了,所以不算常量,不唯一。

ES5声明常量




两次控制台输出es都是es6,所以这个方法可以声明常量

ES6采用const关键字来声明常量




报错证明这是个常量(唯一的),因为它不允许被重新赋值(切记能重新赋值的是变量)

const关键字其他错误用法:
(1)




这说明如果你用const关键字一开始只想做个声明,但不给它赋初始值也是不允许的。
(2)




这说明const关键字不允许重复声明,只能用一次,它不会像let和var关键字,重复声明会覆盖掉前面一个值。
(3)


const关键字不属于顶层对象window
(4)




const关键字不允许变量提升这种情况。

拓展:什么是变量提升?



image.png

这乍一看,好像变量还没有声明,控制台就着急就直接输出了。
真的是这样吗?
它其实相当于这样子:


(5)续




陷入暂时性死区,同样不允许常量还没有被声明就直接输出。记住我们JS是自上而下的执行机制。

(6)

我们对比看下const关键字下的块级作用域。


{}大括号就是形成了块级作用域,const关键字声明的作用域范围是局限于{}大括号里面,console.log(str)在{}外面输出是无效的。

const关键字总结,区别于变量var和let


consts声明的常量真的不可以改变吗?其实是可以改变的,那const关键字声明常量的本质到底是什么?接下来让我们慢慢一起来,那就上代码吧。



不是说const定义的常量是唯一,不会变的吗?怎么现在又变了?
Object对象会这样,我们看下另一种数组的情况。




在const定义常量的情况下,看来数组也不是唯一,和对象一样都会被改变。
通过这两个例子,我们发现了什么?


image.png
基本数据类型:number,布尔,字符串等,它们都属于栈内存。
对于对象和数组来说,他们的存储地址(或空间)是没有发生变化的,变的是他们的存储内容的不同。


这样一看,他们都是把内容替换掉了,地址栏没有换掉。

关于const定义指向对象图解。


所以在对象和数组这种情况下,const定义的常量不唯一。

那对象和数组就成为了const的漏网之鱼了吗,非也,那怎么在对象和数组的这种情况下,一定要让const定义的常量变成唯一的呢?有方法的哦!

(1)对象

在Object.freeze()方法下,name属性没有被改为es2015,这证明了const定义常量是唯一了。

(2)数组

数组也一样的。
(3)对象里面嵌套数组的情况。
image.png
image.png

又被改掉了,又不唯一了,看来Object.freeze()方法也不好使。
其实这是因为Object.freeze()方法是浅层次的冻结,冻结的是第一层,深层次不会被冻结掉。想要冻结深层次,就要封装一个函数递归冻结。
方法如下:




变成唯一了。

相关文章

  • ES6常用及关键特性

    1、变量声明 let 和 const 其中let表示变量,const表示常量,const声明的变量被认为是常量,也...

  • Go-Const

    go 常量 golang中的常量一般用const来定义 const声明多个常量 多个常量声明 值相同时,可省略 常...

  • 😎C++--常量定义2

    const 声明 常量 结果

  • const声明常量

    ES3声明常量,采用大写,但意义不大,不严谨。很明显BASE_URL发生变化了,所以不算常量,不唯一。 ES5声明...

  • ECMAScript6学习笔记-D2 const命令

    const命令用来声明变量,但是与let不同的是const声明的是常量。一旦声明,常量的值便不可更改 const的...

  • ECMAScript6学习笔记-D2 const命令

    const命令用来声明变量,但是与let不同的是const声明的是常量。一旦声明,常量的值便不可更改 const的...

  • ES6-const

    const也用来声明变量,但是声明的是常量。一旦声明,常量的值就不能改变例子: const块级作用域: const...

  • ES6中的const及临时死区(Temporal Dead Zo

    const声明的是常量,声明的同时必须进行初始化。 在声明常量的同时必须赋值,不可声明变量后在赋值。 const声...

  • ES6 学习笔记-const 命令

    const声明一个只读的常量。一旦声明,常量的值就不能改变。 const声明的变量不得改变值,这意味着,const...

  • 2019-01-10

    const 总结一下昨天的:◆ const声明一个只读的常量,一旦声明,常量的值就不能改变◆ const一旦声明变...

网友评论

      本文标题:const声明常量

      本文链接:https://www.haomeiwen.com/subject/tzmbektx.html