let
1.在同一作用域内不可以重复声明。
2.块级作用域。只在代码块里有效,即在它定义的大括号{}内有效。
3.不存在变量提升,不允许在变量声明前使用。
4.不影响作用域链。
写for循环的时候推荐用let
const
1.不可以重复声明,声明时必须有初始值。
2.一般常量使用大写(不是语法要求,这是一种良好的编程习惯)。
3.一经声明常量不可以修改。
4.块级作用域.
5.对数组和对象的元素的修改,不算对常量的修改,不会报错。常量指向的只是数组或对象的首地址(指针)。
var:
1.可以重复声明。
2.可以修改值。
3.声明提升,在初始化时就会创建值为undefined,若有同名函数,则会将同名函数作为值赋予变量。
4.块级作用域,严格来书不支持。