let, var, const都是用来声明变量的
var存在声明提升,允许重复定义和赋值的
const 一般用来定义敞亮,值不能被更改,所以在定义时就要赋值,复杂类型不能更改它的地址,如const a = [];她是可以被push的,a[0] = 1;
let和const都只在声明所在的会计作用与有效,不存在变量提升。
let 1.不存在变量声明提升
2.存在暂时性死区(在代码定义前使用,会报错)
function(x = y, y =2) {}
3.不允许重复声明
4.块级作用域(es5只用全局和函数作用域)