Let Const
 Let 和 const 声明会形成块级作用域。
  var "缺陷"
 - 可以重复声明同名变量(闭包缓存)
- 无法限制修改
- 没有块级作用域({},if () {},for () {}),作用域只在函数中有效Function。
- 变量提升
- 声明的变量会挂载在 window 上
 Let
 Let 暂存死区
 Let 栈内存
  Const
 Const 一旦声明必须赋值,不能用 null 占位,声明后不能再修改,如果 声明的是复合类型数据,可以修改属性
 Const 声明复合类型的数据({}、[]),变量指向内存地址。Const 栈内存储存的是堆内存的地址,堆内存储存了实际的数据