let、var、const的区别

fuz

let的特性:

1、let命令声明变量,用法类似var,但所声明的变量只在let命令所在的代码块之间有效


上图是会报错的,得在{ }中console.log(b) 才可调用

2、let不存在变量提升

在ES5中,var变量会被提升,无块级作用域


像上面控制台会输出a是undefined,因为a的变量被提升到console前面,就是


而在ES6中,使用let变量是不会被提升,而是直接报错,所以在使用let变量一定要先声明再使用变量


3、暂时性死区

在代码块内,使用let声明变量之前,该变量都是不可用的


还是跟第二条是一样的报错,需要先let a ="abc";再console.log()才不会报错。

理解为:如果在区块中存在let和const命令,凡是在声明之前就使用变量,会报错。

4、不允许重复声明

在ES5中,var变量可以重复声明变量,在后面的声明的变量可以覆盖掉前面声明的变量


5、let为JS新增 了块级作用域


6、var挂载在window上,let没有挂载在window上

所以可以总结一下使用let变量有两个优点:

1)内层的变量不会覆盖外层的变量

2)如果是计数,循环变量,也不会将变量泄露成为全局变量

const:定义常量、不允许再次修改赋值

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

相关阅读更多精彩内容

友情链接更多精彩内容