美文网首页码农
JS/ES6新关键字let是否在任何情况下都优于var

JS/ES6新关键字let是否在任何情况下都优于var

作者: 潜水的旱鸭子 | 来源:发表于2019-05-10 13:01 被阅读0次

    一、区别

      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.根据公司或项目要求决定


    个人见解,不代表官方,如有不同看法,欢迎留言交流,谢谢支持……^ _ ^

    相关文章

      网友评论

        本文标题:JS/ES6新关键字let是否在任何情况下都优于var

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