var
### var 先使用,后声明
### var 定义变量,没有块的概念,可以跨块访问,
### var 不能跨函数访问,不初始化出现undefined,不会报错
### 同一个作用域内,var可以声明重名的变量
### 在代码级内部,不可以在声明变量之前使用
let
### let声明的变量不存在预解析
### let声明的变量在块级作用域有效
### 同一个作用域内,let不可以声明重名的变量
### 在代码级内部,不可以在声明变量之前使用
const
### 声明的变量不可以重新赋值,必须在声明的时候进行初始化,
### 除了这条规则,别的特性和let一致