ES6——let、const的使用

与var的区别

区别一:

let关键字:

  • 从直观的角度来说,let和var是没有太大的区别的,都是用于声明一个变量

const关键字:

  • const关键字是constant的单词的缩写,表示常量、衡量的意思;
  • 它表示保存的数据一旦被赋值,就不能被修改;但是如果赋值的是引用类型,那么可以通过引用找到对应的对象,修改对象的内容;

此外let、const不允许重复声明变量

作用域提升:

var声明的变量是会进行作用域提升的,使用let声明的变量,在声明之前访问会报错;


image.png

维基百科并没有对作用域提升有严格的概念解释,那么我们自己从字面量上理解;

  • 作用域提升:在声明变量的作用域中,如果这个变量可以在声明之前被访问,那么我们可以称之为作用域提升;
  • 在这里,它虽然被创建出来了,但是不能被访问,我认为不能称之为作用域提升;
  • 所以我们可以认为let、const没有进行作用域提升,但是会在解析阶段被创建出来

块级作用域

JavaScript只会形成两个作用域:全局作用域和函数作用域。


image.png

ES5中放到一个代码中定义的变量,外面是可以访问的


image.png

const、let
在ES6中新增了块级作用域,并且通过let、const、function、class声明的标识符是具备块级作用域的限制的

image.png

我们发现函数拥有块级作用域,但是外面依然是可以访问的:这是因为引擎会对函数的声明进行特殊的处理,允许像var那样进行提升;

典型应用

es6.png

  • 不必在使用立即执行函数,为i添加一个特定的函数作用域


    ies5.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容