var 作用域有全局作用域和函数作用域存在声明提升,初始化为undefined,再定义的时候再重新赋值可以重复声明 let 块级作用域,存在声明提升,但是不能被初始化,也就是声明的前不能被访问,否则会犯错一般用于声明一个变量,不可以重复声明,可以修改值 const 块级作用域存在声明提升,但是不能被初始化,也就是声明的前不能被访问,否则会犯错一般用于声明一个常量,不可重复声明,不可以修改值(引用类型可以修改值)