ES6的声明关键字let场景使用

一、区别
  ES6新版中增加的let有这么几大特性:
    1.不允许变量提升;
    2.同一作用域内不允许重复声明;
    3.暂时性的死区;
    4.块级作用域;

与let相比老版本中的var声明的变量就显得比较宽松了:
    1.省略不写的时候表示全局变量;
    2.声明的变量会提升到作用域开始的位置;
    3.可以重复声明;
    4.只有全局和局部作用域,除非在闭包环境下,否则不会产生类似块级作用域的效果

二、场景举例
  一般在使用let的时候,除了使我们的语法更严格之外,还利用了块级作用域的特性,在不产生闭包环境的情况下,让要声明的变量成为私有变量,如for循环中的点击事件要访问for循环的计数器i,此时使用let声明计数器,会在for循环中产生一个块级作用域,所有在这个块级作用域中的代码段都可以访问到每次i的值
在这里插入图片描述

而如果用var声明这个计数器的话,就需要一个闭包环境来实现这个操作,那么闭包环境又需要消耗大量的内存。所以在此种情况下更适合使用let

在这里插入图片描述

那什么时候适合使用var而不适合用let呢,目前来看,好像还没有这种情景,几乎所有能用var实现的需求,使用let都能实现,并且代码更规范,语法更严格。而且随着前端行业的发展,ES6的全面推广也是早晚的事,let全面替换掉var也是有可能发生的事
  但是就目前的情况来看,ES6还未全面流行开来,浏览器的兼容也没有完全解决,相应的如let之类ES6中新增的关键字也存在一定的兼容隐患,正如一句话所说:

新特性一时爽,兼容性火葬场。

三、总结
  let和var的抉择需要视情况而定,并不是所有情况下let都优于var。(如果有兼容问题,let反而会失效或报错)
  那么在项目中如何去选择呢,我认为遵循两个原则就好:
    1.用自己熟悉的
    2.根据公司或项目要求决定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值