var
1、无论在哪声明,都会被当成在当前作用域顶部声明的变量(Hosting机制)
2、var会覆盖全局属性
let
1、块级标识符,不会被提升,用临时死区(TDZ)表示
2、let不能覆盖全局属性,只能遮蔽
3、let不能重复定义,即定义一个已被定义过了的一个变量
4、for-in循环和for-of循环
const
1、块级标识符,不会被提升,用临时死区(TDZ)表示
2、const不能覆盖全局属性,只能遮蔽
3、const不能重复定义,即定义一个已被定义过了的一个变量
4、for-in循环和for-of循环
5、声明的是常量,常量必须初始化,且不能重新被赋值
6、可声明对象,不允许修改绑定,但允许修改值