const和let都是声明变量的关键字,都是块级作用域,即在声明的块级内部有效;
-
const声明的变量必须在声明时进行初始化,而let声明的变量可以不进行初始化。
-
const声明的是常量,一旦声明就不可以更改,更改的话就报错;
const a = ""; a = 5 console.log(a);
-
let声明的变量值可以更改;
-
let和const变量名字不能重复声明;
var和const、let的区别:
1.var是全局作用域,可重复声明,let和const是块级作用域,不可重复声明
2.var可以做变量提升,而let和const不存在变量提升,这意味着在使用var声明变量时,可以在声明之前使用变量,而使用let和const声明变量时,必须先声明再使用。
总结:
块级作用域解决了ES5中的两个问题:
- 内层变量可能覆盖外层变量
- 用来计数的循环变量泄露为全局变量
所以以后声明变量用let,生命对象类型用const,没有特殊情况就不要用var;