1.var是es6之前的旧语法
1.可以重复定义
2.var有预解析
3.var没有块级作用域
2.let是es6语法,声明变量
1.不可以重复定义
2.没有预解析
3.有块级作用域
4.暂时性死区
3.const是es6语法,声明常量
1.不可以重复定义
2.声明后不可以赋值、更新
3.没有预解析
4.有块级作用域
5.暂时性死区
暂时性死区的具体解释为:在代码块内,使用let和const命令声明变量之前,该变量都是不可用的,语法上被称为暂时性死区。
预解析就是预先解析function和var。
任何一对花括号({})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。