-
变量提升-->var存在变量提升,即变量的值可以在声明之前调用(值为undefined),let和const不存在变量提升
-
暂时性死区-->var不存在暂时性死区,let和const存在暂时性死区,只有等到变量声明的那一行代码出现,才可以获取和使用变量
-
块级作用域-->var不存在块级作用域,用
var声明的变量既是全局变量,也是顶层变量(ES5中顶层变量和全局变量是等价的),let和const存在块级作用域 -
重复声明-->var允许重复声明,let和const在同一作用域下不允许重复声明
-
修改声明的变量-->var和let可以修改声明的变量,const不允许修改声明的变量
-
使用-->能用const的情况尽量使用const,其他情况下大多数使用let,避免使用var