15
社区成员




这三中变量的定义方式有着一些关键的区别:
首先就是var声明的变量会导致变量全局污染;
其次就是作用域,var在函数作用域内有效,并且能在函数外部访问,而let和const在块级作用域有效;
第三就是重新赋值,var可以重新赋值和重新声明,let可以重新赋值但不能重新声明,const既不能重新赋值,也不能重新声明,并且定义时必须初始化。
最后就是变量的提升,var会被提升到其作用域的顶部,但不会初始化。let和const也会被提升到作用域的顶部,但在初始化之前不能被访问,也就是我们通常说的暂时性死区。