let
1.不存在变量提升
es5中var和function都存在变量提升,但let声明的变量不存在。
在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称TDZ)。
2.不允许重复声明
3.用法
适合放在for循环中;代替闭包
const
声明常量,后面改变值或重新赋值不起作用;声明对象时,保存的是指向对象的指针,所以可以改变对象本身属性或方法,但不能改变指针本身的值,也就是重新赋值会出错。