es6学习:let与const的理解与使用

在一开始学习js的时候,相信很多学过c c++ java等语言的人都会觉得很奇怪,特别是在声明变量的时候,比如我先console.log(a) 后 var a = 10;在上述语言中一定会报错,但在js中由于变量声明的提升,会输出未定义,这很不正常,也是js的一个缺陷,js很灵活,但过于灵活。
在es6的版本更新中,出现了 新的声明变量的方法:let const
学过上述语言的人只需要把let当作上述语言中声明变量的方法即可,几乎相同,es6的版本升级让js更加成熟了。
有了let之后我们使用变量之前必须先声明变量,因为他不再存在变量提升这个说法了。
其次,let像上述语言一样,形成严格的块级作用域,内部嵌套的变量声明不会影响到外部。在一个作用域内不允许重复声明。
let的出现,让立即执行函数加持的for循环不再必要

// IIFE 写法
(function () {
  var tmp = ...;
  ...
}());

// 块级作用域写法
{
  let tmp = ...;
  ...
}

简单的一个let就代替了立即执行函数,其实在将es6转化为es5时我们可以看到,此处添加的let就是转化成了立即执行函数的样子。

const
const的特性几乎和let一样,唯一的区别就是const声明的值不可修改,这应该跟c里面的const一样。
要注意的是,const声明的变量值不可修改,实际上是其内存地址保存的数据不可修改,比如声明的是一个对象,内存地址保存的就是指向对象的指针,const只能保证这个指针是固定的,但指针指向的数据并不固定。
例如

const foo = {};

// 为 foo 添加一个属性,可以成功
foo.prop = 123;
foo.prop // 123

// 将 foo 指向另一个对象,就会报错
foo = {}; // TypeError: "foo" is read-only
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值