var:var关键字声明的变量可以不用直接赋值 => var message 可以在使用的时候再赋值。var关键字声明的变量,会变量提升,可以先使用,然后再声明。
let:let关键字声明的范围是块级作用域,一个 '{}' 就被称为一个块级作用域。块外不能访问块内let声明的变量,块内也不能访问块外let声明的变量。在解析代码时,虽然JS能够注意到后来声明的let变量。但是在let声明之前使用该变量,依然会报错。因为let没有变量提升。所以这种情况被称为暂时性死区。
const:const关键字声明变量时必须同时初始化变量,且之后不可修改。const声明也不允许重复声明。
总结:不使用var ,const优先,let次之。