let和constes6中新引入的关键字,用来变量声明时使用,解决js中var关键字变量声明的问题
var关键字变量声明的问题
- 污染全局变量,var关键字声明的的变量可以覆盖window对象身上原本有的属性
- 重复的变量声明
- 变量提升,奇怪的函数作用域
上面的问题是var关键字的硬伤,在实际开发中很容易带来问题,因此才有了let和const
let关键字
let关键字解决了var关键字声明的问题
- 不会污染window对象身上的属性
let console = 1
window.console.log(window)
在这里插入图片描述
window身上的console没有被覆盖,依然能够正常打印
- 不允许重复变量声明
let a = 1;
let a = 2;
- 解决了变量提升
var关键声明变量时,变量声明会提升到当前作用域的最前面,而let关键字
console.log(a)
let a = 2;
看到这样的结果你可以理解为let关键字声明的变量不会变量提升,不过实际上它也会进行变量提示,只是将其放在了一块名叫“暂时性死区”内存空间,只用在赋值之后才能够进行访问
const关键字
和let关键字类似,只是const声明的变量是常量,声明时必须初始化,并且不允许改变它的值。