码农之前端

let、var、const的区别

2019-10-25  本文已影响0人  O人心
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:定义常量、不允许再次修改赋值

上一篇下一篇

猜你喜欢

热点阅读