函数提升优先于变量提升,函数提升会把整个函数挪到作用域顶部,变量提升只会把声明挪到作用域顶部var 存在提升,我们能在声明之前使用。let、const 因为暂时性死区的原因,不能在声明前使用var 在全局作用域下声明变量会导致变量挂载在 window 上,其他两者不会let 和 const 作用基本一致,但是后者声明的变量不能再次赋值