jdk 到底有什么用_ES6 的 const 到底有什么用?

5959a5cd41dbed2bee5d0074f3cd1c39.png

ECMAScript 2015(ECMAScript 6)

ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: letconst

let 声明的变量只在 let 命令所在的代码块内有效。

const 声明一个只读的常量,一旦声明,常量的值就不能改变。

在 ES6 之前,JavaScript 只有两种作用域: 全局变量函数内的局部变量


以上是截止至 19年10月份 菜鸟教程提供给开发者关于ES6新命名变量关键词 letconst 的解释。但是很不幸的是:解释中关于 const 的部分是错误或者说不准确的!

大部分网上关于const的解释也是模糊不清,大家只是知道 const 和常量有关系。但是我们为什么要用const,什么情况下用const?本文会针对const关键词做详细的解释,文不在多,字字诛心


首先,我们用const声明一个 “常量”,实际是创建了一个不可修改的指针,指向内存中一块区域。我们交给const“常量”的内容就在这块区域中。

const A = 1       // 值不可改变
const B = '1'     // 值不可改变
const C = true    // 值不可改变
const D = {d1: 1}      // 属性实际可以改变 例如 D.d1 = 2
const E = ['e1']      // item实际可以改变 例如 E[0] = 'e2'

由此可见,基础数据类型由于其值是存放在栈中的,修改值后实际内存地址也会变更,所以违反了const声明常量不可修改指针的原则。

而引用数据类型则不同,由于修改其属性不影响堆中对应地址变化,所以值可以改变。但是例如以下示例,实际修改了引用地址,则会运行错误:

const D = {d1: 1}
const E = ['e1']
D = {d1: 2}         // 错误
E = ['e2']          // 错误

了解了const的使用原理后,实际业务开发过程中,const到底有什么用呢?

1、要声明基础数据类型的常量(后续无需修改)推荐使用const

const num = 1
const str = '字符串'
const boo = true

2、要声明引用数据类型的常量,推荐使用const(虽然可以修改其属性,但是由于const声明的变量和let声明的变量在值为引用数据类型下,存放的方式是不同的,非滥用const的情况下,系统检索const变量的速度比let快)

const obj = {a: 1}
const list = [1]

总结:

1、如果const声明的数据类型为引用数据类型,其值的属性是可以改变的!

2、业务中后续无需改变的变量,可以采用const声明方式,由于检索方式不同,const的效率会高于let。

3、可以用在对象、数组与函数上,因为const声明方式一声明时就要赋值,犯错的机会会减少很多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值